基于部分数组的MongoDB拉?

时间:2014-11-10 03:34:43

标签: mongodb mongodb-query

我可以为一个简单的文档做$pull

> db.users.find();
{ "_id" : 4, "sessions" : [ { "sid" : "foo1" }, { "sid" : "bar" } ] }

> db.users.update({}, {"$pull": {sessions: {"sid" : "bar"}}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

但如果我有关于会话的更多信息:

> db.users.insert({_id:5, sessions: [ { sid: "foo"}, {sid:"bar", ssid:"test"}]});
> db.users.find();
{ "_id" : 4, "sessions" : [ { "sid" : "foo1" } ] }
{ "_id" : 5, "sessions" : [ { "sid" : "foo" }, { "sid" : "bar", "ssid" : "test" } ] }

> db.users.update({}, {"$pull": {sessions: {"sid" : "bar"}}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

然后$pull失败。

1 个答案:

答案 0 :(得分:1)

您的$pull是正确的,但您需要为multi: true添加update选项以应用于这两个文档:

 
db.users.update({}, {"$pull": {sessions: {"sid" : "bar"}}}, {multi: true});