UpdateMany不是一个功能MongoDB +节点

时间:2016-09-07 18:30:31

标签: node.js mongodb monk

我正在写一段代码,要在npm-cron计时器上运行。这是:

var CronJob = require('cron').CronJob;
var job = new CronJob({
  cronTime: '* * * * *',
  onTick: function() {
    var monk = require('monk'); // persistence module over MongoDB
    var db = monk('localhost:27017/test');

    console.log("Hello from the Cron job! " + new Date());
    var collection = db.get('Activity');

    collection.updateMany({"repetitions.today": {$gt: 0}},
    {
        $set: {
            "repetitions.today": 0,
        }
    }, function(err, activity){
        if (err) throw err;
    });


  },
  start: true,
  timeZone: 'America/Los_Angeles'
});
job.start();

问题是我在collection.updateMany()行上收到错误。错误说明

  

updateMany不是函数

另一方面,如果我使用update()而不是updateMany(),则代码可以正常工作(但仅限于Mongo集合中的第一项,如预期的那样)。我做错了什么以及可能导致这种情况的原因是什么?

我尝试使用foreach()重新编写此内容,但它也未被识别为函数。

1 个答案:

答案 0 :(得分:1)

...嗯

可能想尝试这样的事情(ES6)

db.collection('Activity').updateMany({"repetitions.today": {$gt: 0}},
{
    $set: { "repetitions.today": 0 }
}).then(r => {
    console.log('Success!');
}).catch(err => {
    console.log('Error - ' + err);
});