今日は、MongoDB を使用する最初の日です
私のコレクション形式:
{ "_id" : "ObjectId" :"4f2ff1d00cf2f86576f91a91"),
"fishStuff" : [
{
"name" : "GreatWhite",
"fID" : 50
},
{
"name" : "Hammerhead",
"fID" : 51
},
{
"name" : "White",
"fID" : 60
}
], "fishSpecies" : "Oceanic"
...
最初の子はこの「fishStuff」のグループに存在するため、3 番目の子 (名前: White) を削除するシェル (まっすぐな mongo) にクエリを記述したいと考えています。
「where」句は次のようにする必要があると思います:
{fishSpecies:"Oceanic","fishStuff.fID":50, "fishStuff.fID:60}
では、「60」子要素全体を削除するにはどうすればよいですか? 「50」が同じ「fishStuff」グループ/配列にもある場合、コレクション内のすべての「60」要素を削除したいと考えています。また、「where」節に fishSpecies を含めた理由は、複数の fishSpecies の可能性があるためです。
アップデート:
以下の 2 人のコメンターが残した提案を試しましたが、(以下のカウントを実行した後) fID 50 と 60 の両方を含む子オブジェクト セットの 7 つのインスタンスをまだ取得しています。
> db.fish.update({fishSpecies:"oceanic","fishStuff.fID":50}, {$pull : {"fishStuff" : { fID : 60}}},false, true)
> db.fish.find({"fishSpecies":"oceanic","fishStuff.fID":50, "fishStuff.fID":60}).count()
7
ゼロ レコードが更新されるため、 multi: true フラグは機能しません (または正しく実装していません)。