假设集合是这样的:
db.mytests.find()
{ "_id" : ObjectId("4fb277b89b8295a790efde44"),
"mylist": [
{ "foo1" :"bar1", "foo2" : "bar2" },
{"foo1" : "bar3", "foo2" : "bar4" }
],
"nonlist" : "nonlistVal" }
我想删除mylist
中foo1
等于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
上?你能告诉我删除数组中文档元素的正确方法吗?
答案 0 :(得分:5)
尝试更改:
db.mytests.update({},{$pull:{'mylist':{'mylist.$.foo1':'bar1'}}})
为:
db.mytests.update({},{$pull:{'mylist':{'foo1':'bar1'}}})