Ето друг начин да преместите елемент на нова позиция, която ще размени позициите на it2 и it3...
-
Премахнете елемента от масива с помощта на $pull [ Документи тук ] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Вмъкнете елемента в новата позиция с помощта на $push. [ Документи тук ] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Кога да се използва
Отговорът на Pouzor за използване на $set може да е по-прост и да работи по-добре за много случаи на употреба.
Въпреки това, ако множество потребители едновременно добавят, премахват и пренареждат елементи от масив, този метод означава, че няма да презапишете промените на другия.
Може също да е по-ефективен в някои случаи (напр. големи елементи на масив), тъй като се записват по-малко данни.
ГОЧА:Списък със списъци
Ако списъкът, който пренареждате, е масив от масиви, трябва да използвате оператора $all с $pull [ Документи тук ]
Вземете този пример:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Ето кода за премахване на първия списък от списъка със списъци:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Списък с обекти
Това е лесно. Да кажем, че имате следния списък с обекти:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Можете да $дърпате така:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});