Reputation: 5277
Suppose the collection is like this:
db.mytests.find()
{ "_id" : ObjectId("4fb277b89b8295a790efde44"),
"mylist": [
{ "foo1" :"bar1", "foo2" : "bar2" },
{"foo1" : "bar3", "foo2" : "bar4" }
],
"nonlist" : "nonlistVal" }
I want to remove a document in mylist
whose foo1
equal to bar1
, after reading mongodb document about updating I used this:
db.mytests.update({},{$pull:{'mylist':{'mylist.$.foo1':'bar1'}}})
but it failed.
To figure out the problem I insert a new array into mytests
using this:
db.mytests.update({},{$set:{'anotherList':[1,2,3,4]}})
and then using db.mytests.update({},{$pull:{'anotherList':{$gt:3}}})
to pull the element
4
in array anotherList
,it succeed.
I supposed the problem is with the mylist.$.foo1
? Can you tell me the right way to remove a document element in a array?
Upvotes: 3
Views: 6622
Reputation: 17208
Try changing:
db.mytests.update({},{$pull:{'mylist':{'mylist.$.foo1':'bar1'}}})
to:
db.mytests.update({},{$pull:{'mylist':{'foo1':'bar1'}}})
Upvotes: 5