这个问题在这里已有答案:
我有一个非常简单的案例。我想每隔午夜更新我的收藏品。我正在使用node-schedule
:
schedule.scheduleJob('0 0 * * *', () => {
Users.updateMany();
});
我想要做的就是遍历我的集合中的每个文档(Users
)然后如果User.created
是false
,我想把它变成true
。
在javascript中它将是:
for (let user in Users) {
if (user.created === false) {
user.created = true;
}
}
如何在猫鼬中做到这一点?谢谢!
首先需要查询才能找到要更新的文档。这很简单:
{"created": false}
然后你需要一个更新查询来告诉mongo如何更新这些文件:
{"$set":{"created": true}}
您需要使用$set
运算符指定要更改的字段,否则它将覆盖整个文档。最后,您可以将这些组件组合到单个mongo调用中,并使用其他参数告诉mongo我们要修改多个文档:
User.update({"created": false}, {"$set":{"created": true}}, {"multi": true}, (err, writeResult) => {});
Mongoose尝试密切复制mongo API,因此所有这些信息都可以在MongoDB的文档中找到:https://docs.mongodb.com/manual/reference/method/db.collection.update/