如何在mongoose中更新集合中所有文档的相同字段

时间:2017-06-23 20:11:11

标签: node.js mongodb mongoose

我有这个集合(不完全是我拥有的,仅举例)。我想更新所有" 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');
    });

我该怎么办?提前谢谢

1 个答案:

答案 0 :(得分:5)

我实际上认为很多人都有这个问题。
您应该包含一个名为multi: true的选项。

<强>实施例

Property.update({}, {'$set': {'numberOfViewsPerWeek' : 0}}, {multi: true},
   function(error, properties){/* ... rest of the code*/

<强> Docs:

  

默认情况下,update()方法更新单个文档。设置   多参数可更新符合查询条件的所有文档。

我不知道他们为什么这样做,我发现它不直观。
在我看来,更新所有文件应该是默认的。