mongodb - 如何限制 mongodb 中更新文档的数量

如何在更新文档时实现类似于 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} );

https://stackoverflow.com/questions/6590890/

相关文章:

ruby - 如何在控制台中禁用 MongoDB 日志消息?

node.js - 处理 Mongoose 验证错误——在哪里以及如何处理?

javascript - 通过 JavaScript 直接访问 MongoDB

mongodb - 如何使用 mongodump 转储匹配特定日期范围的记录?

mongodb - 如何在 Mongo 中进行 "NOT IN"查询?

node.js - 如何使用 Mongoose Promise - mongo

mongodb - 使用新的 _id 在 MongoDB 中复制文档

arrays - 更新 mongodb 中的嵌套数组

java - Mongo - 忽略属性被持久化

Mongodb - 运行 "mongo"和 "mongod"数据库之间的区别