我惊讶地发现以下示例代码仅更新单个文档:
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
Run Code Online (Sandbox Code Playgroud)
我知道我可以循环并不断更新,直到它们全部改变,但这似乎非常低效.有没有更好的办法?
我尝试在一个集合的所有文档中重命名一个字段
db.coll.update({},{ $rename: {'originField':'newField'} });
Run Code Online (Sandbox Code Playgroud)
但只有一个文件被改变了,为什么?
我有一个非常简单的案例。我想在每个午夜更新我的收藏。我正在使用node-schedule:
schedule.scheduleJob('0 0 * * *', () => {
Users.updateMany();
});
Run Code Online (Sandbox Code Playgroud)
我要做的就是遍历我的collection(Users)中的每个文档,如果User.created是false,我想将其转换为true。
在javascript中,它将是:
for (let user in Users) {
if (user.created === false) {
user.created = true;
}
}
Run Code Online (Sandbox Code Playgroud)
用猫鼬怎么做?谢谢!
我有这个收藏(不完全是我的收藏,例如)。我想将所有“ numberOfViewsPerWeek”字段更新为0,就像重置一样。
{
"_id" : ObjectId("594d2359bf170b0828690bf7"),
"owner" : ObjectId("594c126285f0922a985083c1"),
"numberOfViewsSincePost" : 15,
"numberOfViewsPerWeek" : 4,
}
{
"_id" : ObjectId("594d709addb8691cf067fa73"),
"owner" : ObjectId("594c126285f0922a985083c1"),
"numberOfViewsSincePost" : 10,
"numberOfViewsPerWeek" : 2,
}
{
"_id" : ObjectId("764d709addb8691cf067fa70"),
"owner" : ObjectId("594c126285f0922a985083c1"),
"numberOfViewsSincePost" : 12,
"numberOfViewsPerWeek" : 7,
}
...
Run Code Online (Sandbox Code Playgroud)
我会尝试使用update,但是它只会更新第一个文档,我的代码是这样
Property.update({}, {'$set': {'numberOfViewsPerWeek' : 0}}, function(error, properties){
if(error){
console.log(error);
}
if(!properties){
console.log('Something went wrong');
}
console.log('success update view');
});
Run Code Online (Sandbox Code Playgroud)
我该怎么办?提前致谢