gpt4 book ai didi

mongodb - FindAndModify,返回对象数组

转载 作者:可可西里 更新时间:2023-11-01 09:59:06 26 4
gpt4 key购买 nike

我正在尝试使用 findAndModify 修改多个文档,然后返回修改后的新文档。我的查询是:

db.users.findAndModify({
query: {
_id: {
$in: [
ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")
]
}
},
update: {
$inc: {
i: 1
}
},
new: true
});

但只能检索一个文档。我的目标是修改多个文档,并返回所有文档。是否可以检索文档数组?

最佳答案

this page 中所述在文档中,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);

另一种选择是使用 multi 作为选项运行 update,然后检索文档。您的代码将类似于以下内容:

db.users.update(
{ "_id": {
"$in": [ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")]
}
},
{ "$inc": { "i": 1 }},
{ "multi": true }
);
db.users.find(
{ "_id": {
"$in": [ObjectId("54061f3c27afac4b44688c1d"),
ObjectId("54061f3c27afac4b44688c1e")]
}
}
);

关于mongodb - FindAndModify,返回对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com