3

コレクションが次のようになっているとします。

db.mytests.find()
{ "_id" : ObjectId("4fb277b89b8295a790efde44"), 
"mylist": [ 
    { "foo1" :"bar1", "foo2" : "bar2" }, 
    {"foo1" : "bar3", "foo2" : "bar4" } 
], 
"nonlist" : "nonlistVal" }

更新に関するmongodbドキュメントmylistを読んだ後、これを使用したドキュメントを削除したい:foo1bar1

db.mytests.update({},{$pull:{'mylist':{'mylist.$.foo1':'bar1'}}})

しかし、それは失敗しました。mytests問題を解決するために、これを使用して新しい配列を挿入します。

db.mytests.update({},{$set:{'anotherList':[1,2,3,4]}})

次に、配列内db.mytests.update({},{$pull:{'anotherList':{$gt:3}}})の要素をプルするために 使用すると、成功します。4anotherList

問題はmylist.$.foo1?にあると思います。配列内のドキュメント要素を削除する正しい方法を教えてください。

4

1 に答える 1

5

変更してみてください:

db.mytests.update({},{$pull:{'mylist':{'mylist.$.foo1':'bar1'}}})

に:

db.mytests.update({},{$pull:{'mylist':{'foo1':'bar1'}}})
于 2012-05-17T16:53:13.210 に答える