2016-09-07 11 views
0

npm-cronタイマーで実行するコードを書いています。ここでは、次のとおりです。UpdateManyは関数ではありませんMongoDB + Node

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()ライン上のエラーを取得していることです。エラーは、私が予想通りupdate()代わりのupdateMany()、コードの作品(だけMongoのコレクションの最初の項目には、使用している場合

updateManyは、一方の機能

ではないと述べています)。私は間違って何をしているのでしょうか?

foreach()を使って書き直そうとしましたが、これも機能として認識されません。

+2

あなたが使用してみました:更新クエリのオプションとして、{マルチ本当}? collection.update({ "repetitions.today":{$のGT:0}}、{ $設定:{ "repetitions.today":0、 }}、{ マルチ:真} – dyouberg

+0

働い!updateMany()と同じであるかどうか知っていますか?上記の問題がなぜ発生したのか不思議です。 – MadPhysicist

+0

updateMany()にはMongoDBのバージョン3.2以降が必要です。 --version) – dyouberg

答えて

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); 
}); 
関連する問題