Oto inny sposób przeniesienia elementu na nową pozycję, który zamieni pozycje it2 i it3...
-
Usuń element z tablicy za pomocą $pull [Dokumenty tutaj] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Wstaw element w nowej pozycji za pomocą $push. [Dokumenty tutaj] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Kiedy używać
Odpowiedź Pouzora na użycie $set może być prostsza i działać lepiej w wielu przypadkach użycia.
Jeśli jednak wielu użytkowników jednocześnie dodaje, usuwa i zmienia kolejność elementów tablicy, ta metoda oznacza, że nie zastąpisz nawzajem swoich zmian.
Może być również bardziej wydajny w niektórych przypadkach (np. duże elementy tablicy), ponieważ zapisywanych jest mniej danych.
GOTCHA:Lista list
Jeśli lista, którą zmieniasz, jest tablicą tablic, musisz użyć operatora $all z $pull [ Dokumenty tutaj ]
Weźmy ten przykład:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Oto kod do usunięcia pierwszej listy z listy list:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Lista obiektów
To jest łatwe. Załóżmy, że masz następującą listę obiektów:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Możesz $ciągnąć w ten sposób:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});