如何在mongodb中拉出数组元素(文档)?

时间:2012-05-17 14:09:19

标签: mongodb

假设集合是这样的:

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

我想删除mylistfoo1等于bar1的文档,在阅读mongodb document about updating后我使用了这个文档:

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

我认为问题出在anotherList上?你能告诉我删除数组中文档元素的正确方法吗?

1 个答案:

答案 0 :(得分:5)

尝试更改:

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

为:

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