要素を新しい位置に移動して、it2とit3の位置を入れ替える別の方法を次に示します...
-
$ pull [Docs Here] > 。
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
$pushを使用して要素を新しい位置に挿入します。 [Docs Here] 。
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
いつ使用するか
$ setを使用するというPouzorの答えは、より単純で、多くのユースケースでより優れたパフォーマンスを発揮する可能性があります。
ただし、複数のユーザーが配列アイテムを同時に追加、削除、および並べ替える場合、この方法は、互いの変更を上書きしないことを意味します。
書き込まれるデータが少ないため、場合によっては(大きな配列要素など)より効率的になることもあります。
GOTCHA:リストのリスト
並べ替えるリストが配列の配列である場合は、$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" }
]
}
次のように$pullできます:
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});