Hier ist eine weitere Möglichkeit, ein Element an eine neue Position zu verschieben, wodurch die Positionen von it2 und it3 vertauscht werden ...
-
Entfernen Sie das Element aus dem Array mit $pull [ Docs Here ] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Fügen Sie das Element mit $push an der neuen Position ein. [ Docs Here ] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Wann zu verwenden
Pouzors Antwort auf die Verwendung von $set könnte einfacher sein und für viele Anwendungsfälle eine bessere Leistung erbringen.
Wenn jedoch mehrere Benutzer gleichzeitig Array-Elemente hinzufügen, entfernen und neu anordnen, bedeutet diese Methode, dass Sie die Änderungen des anderen nicht überschreiben.
In einigen Fällen (z. B. bei großen Array-Elementen) kann es auch effizienter sein, da weniger Daten geschrieben werden.
GOTCHA:Liste der Listen
Wenn die Liste, die Sie neu anordnen, ein Array von Arrays ist, müssen Sie den $all-Operator mit $pull [ Docs Here ]
Nehmen Sie dieses Beispiel:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Hier ist der Code, um die erste Liste aus der Liste der Listen zu entfernen:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Liste der Objekte
Das ist einfach. Angenommen, Sie haben die folgende Liste von Objekten:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Sie können folgendermaßen $ziehen:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});