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}}})拉取 4数组中的元素anotherList,它成功了。

我想问题出在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 回答