Đây là một cách khác để di chuyển một phần tử đến một vị trí mới sẽ hoán đổi vị trí của it2 và it3 ...
-
Xóa phần tử khỏi mảng bằng cách sử dụng $ pull [Docs Here] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Chèn phần tử vào vị trí mới bằng cách sử dụng $ push. [Tài liệu tại đây] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Khi nào sử dụng
Câu trả lời của Pouzor để sử dụng $ set có thể đơn giản hơn và hoạt động tốt hơn cho nhiều trường hợp sử dụng.
Tuy nhiên, nếu nhiều người dùng đồng thời thêm, xóa và sắp xếp lại các mục mảng thì phương pháp này có nghĩa là bạn sẽ không ghi đè các thay đổi của nhau.
Nó cũng có thể hiệu quả hơn trong một số trường hợp (ví dụ:phần tử mảng lớn) vì ít dữ liệu được ghi hơn.
GOTCHA:Danh sách các danh sách
Nếu danh sách bạn đang sắp xếp lại là một mảng các mảng, bạn cần sử dụng toán tử $ all với $ pull [Tài liệu tại đây]
Lấy ví dụ sau:
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Đây là mã để xóa danh sách đầu tiên khỏi danh sách danh sách:
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Danh sách đối tượng
Điều này thật dễ dàng. Giả sử bạn có danh sách các đối tượng sau:
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Bạn có thể $ pull như thế này:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});