Allan Ruin
Allan Ruin

Reputation: 5277

How to pull a array element (which is document) in mongodb?

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

Answers (1)

paulmelnikow
paulmelnikow

Reputation: 17208

Try changing:

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

to:

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

Upvotes: 5

Related Questions