如何在更新文档时实现类似于 db.collection.find().limit(10)
的东西?
现在我正在使用一些非常糟糕的东西,比如使用 db.collection.find().limit()
获取文档,然后更新它们。
一般来说,我想返回给定数量的记录并更改每个记录中的一个字段。
谢谢。
最佳答案
你可以使用:
db.collection.find().limit(NUMBER_OF_ITEMS_YOU_WANT_TO_UPDATE).forEach(
function (e) {
e.fieldToChange = "blah";
....
db.collection.save(e);
}
);
(forEach 代码的学分:MongoDB: Updating documents using data from the same document)
这只会更改您指定的条目数。因此,例如,如果您想在“集合”内的一半条目中添加一个名为“newField”且值为 1 的字段,例如,您可以放入
db.collection.find().limit(db.collection.count() / 2).forEach(
function (e) {
e.newField = 1;
db.collection.save(e);
}
);
如果你想让另一半也有“newField”但值为2,你可以在newField不存在的情况下进行更新:
db.collection.update( { newField : { $exists : false } }, { $set : { newField : 2 } }, {multi : true} );
关于mongodb - 如何限制 mongodb 中更新文档的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590890/