首页 > 解决方案 > 在猫鼬中更新许多

问题描述

我有一个非常简单的案例。我想在每个午夜更新我的收藏。我正在使用node-schedule

schedule.scheduleJob('0 0 * * *', () => {
   Users.updateMany();
});

我想做的就是遍历我的集合中的每个文档(Users),然后如果User.createdfalse,我想把它变成true.

在javascript中它将是:

for (let user in Users) {
   if (user.created === false) {
      user.created = true;
   }
} 

如何在猫鼬中做到这一点?谢谢!

编辑:故事很简单,我只想使用猫鼬迭代我的数据库中的每个元素,如果迭代的元素具有字段“created”=== false,请将其更改为 true。

标签: javascriptnode.jsmongodbmongoose

解决方案


您可以使用updateMany()mongodb 的方法来更新多个文档

简单查询是这样的

db.collection.updateMany(filter, update, options)

有关 updateMany 的更多文档,请阅读此处

根据您的要求,更新代码将如下所示:

User.updateMany({"created": false}, {"$set":{"created": true}});

在这里您需要使用$set因为您只想将 created 从 true 更改为 false。对于参考。如果要更改整个文档,则无需使用$set


推荐阅读