我有这个集合(不完全是我拥有的,仅举例)。我想更新所有" 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,
}
...
我尝试使用更新,但它只更新第一个文档,我的代码就是这个
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');
});
我该怎么办?提前谢谢
答案 0 :(得分:5)
我实际上认为很多人都有这个问题。
您应该包含一个名为multi: true
的选项。
<强>实施例强>
Property.update({}, {'$set': {'numberOfViewsPerWeek' : 0}}, {multi: true},
function(error, properties){/* ... rest of the code*/
<强> Docs: 强>
默认情况下,update()方法更新单个文档。设置 多参数可更新符合查询条件的所有文档。
我不知道他们为什么这样做,我发现它不直观。
在我看来,更新所有文件应该是默认的。