mongodb - 如何限制 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} );

关于mongodb - 如何限制 mongodb 中更新文档的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590890/

相关文章:

javascript - mongoose 检查 id 是否存在,但该 id 嵌套在数组中

node.js - Mongoose 没有重新创建索引集合被删除

javascript - Node JS/Mongo 在没有匹配模式的情况下插入

mongodb - 如何选择包含值数组中的数组项的文档?

mongodb - mongoDB 中更新的聚合

mongodb - 更改 mongoDB/mongoose 中的模式

mongodb - MongoDB 中的只写集合

node.js - 使用 collectionfs 更新图像

python - MongoEngine:当将 document_type 定义为 str 时,ReferenceField 仅接受 DBRef 或文档

django - 通过 Django 后端和 Angular 前端删除 MongoDB 集合中的所有文档