我试图用findAndModify修改多个文档,然后返回修改后的新文档。我的问题是:
db.users.findAndModify({
query: {
_id: {
$in: [
ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")
]
}
},
update: {
$inc: {
i: 1
}
},
new: true
});但只能检索一个文档。我的目标是修改多个文档,并将它们全部返回。是否有可能检索一组文档?
发布于 2015-02-27 14:04:37
正如此页在文档中解释的那样,findAndModify“修改并返回单个文档”。如果要使用findAndModify修改多个文档,则每个文档必须运行一次。在mongo shell中,您可以使用一些JavaScript实现这一点,如下所示:
var oids = [ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")];
docs = [];
for (var i in oids) {
id = oids[i];
doc = db.e.findAndModify({
"query": { "_id": id },
"update": { "$inc": { "i": 1 }},
"new": true
});
docs.push(doc);
}
printjson(docs);另一个选项是使用update作为选项运行multi,然后检索文档。您的代码如下所示:
db.users.update(
{ "_id": {
"$in": [ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")]
}
},
{ "$inc": { "i": 1 }},
{ "multi": true }
);
db.users.find(
{ "_id": {
"$in": [ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")]
}
}
);https://stackoverflow.com/questions/28766668
复制相似问题