Zde je další způsob, jak přesunout prvek na novou pozici, která vymění pozice jeho2 a it3...
-
Odeberte prvek z pole pomocí $pull [ Docs Here ] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Vložte prvek do nové pozice pomocí $push. [ Dokumenty zde ] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Kdy použít
Pouzorova odpověď na použití $set může být jednodušší a v mnoha případech použití fungovat lépe.
Pokud však více uživatelů současně přidává, odebírá a přeskupuje položky pole, tato metoda znamená, že si vzájemně nepřepíšete změny.
V některých případech může být také efektivnější (např. velké prvky pole), protože se zapisuje méně dat.
GOTCHA:Seznam seznamů
Pokud je seznam, který měníte, pole polí, musíte použít operátor $all s $pull [ Dokumenty zde ]
Vezměte si tento příklad:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Zde je kód pro odstranění prvního seznamu ze seznamu seznamů:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Seznam objektů
To je snadné. Řekněme, že máte následující seznam objektů:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Můžete $tahat takto:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});