Oto kolejny sposób, aby przenieść element do nowej pozycji, która będzie zamieniać położenie It2 i it3 ...
Usuń element z tablicy za pomocą $ pull [ Docs Here ].
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
Włóż element w nowe położenie, używając przycisku $ push. [ Docs Here ].
update({"name": "myDoc"}, {
$push: {
"items" : { $each : [ "it3" ], $position : 1 }
}
});
Kiedy używać
odpowiedź Pouzor do używania $ zestaw może być prostsze i skuteczniejsze dla wielu zastosowań.
Jeśli jednak wielu użytkowników jednocześnie dodaje, usuwa i porządkuje elementy tablicy, ta metoda oznacza, że nie zastąpisz nawzajem swoich zmian.
W niektórych przypadkach może być bardziej wydajny (np. Duże elementy tablicy), ponieważ zapisywanych jest mniej danych.
GOTCHA: Lista list
Jeśli lista jesteś reorganizację jest tablicą tablic trzeba użyć $ wszystkim operator z $ ciągnąć [ Docs Here ]
Weźmy ten przykład:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Oto kod, aby usunąć pierwszą listę z listy:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Lista obiektów
To jest łatwe. Załóżmy, że masz listę następujących obiektów:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Można $ ciągnąć tak:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});
Nie, nie jest to sposób, aby to zrobić w jednym kroku. http: //docs.mongodb.operatory org/manual/reference/operator/#. W rzeczywistości nie ma nawet sposobu na wstawienie elementu do określonego indeksu. Jest to nierozwiązany/otwarty problem: https://jira.mongodb.org/browse/SERVER-2363. Musisz przepisać całą listę tablic. – WiredPrairie
Co według Ciebie będzie najlepszą praktyką? –
AKTUALIZACJA: od wersji 2.6. Wstawiasz do określonego indeksu za pomocą $ position - https://docs.mongodb.org/manual/reference/operator/update/position/ –