Node.js MongoDB Upsert更新

我正在写一个关键字分数的小应用程序。 因此,如果“贝鲁特”和“教育”进入,如果他们以前没有见过,我想创build一个mongo条目,并给他们1分。如果他们有,我想增加他们的分数一。 我试图用一个更新命令来做到这一点,但我想我可能做错了。

  • 排名是代表数据库的对象
  • “关键”是关键字
rankingdb.update( {keyword:key}, {keyword:key, {$inc:{score:1}}}, {upsert:true, safe:false}, function(err, data) { if (err) { console.log(err); } else { console.log("score succeeded"); } } ); 

SyntaxError: Unexpected token {

你能不能创build一个全新的文件增量?

您的一般方法是正确的,但正如错误消息所示,您的代码中存在语法问题。

试试这个:

 rankingdb.update( {keyword: key}, {$inc: {score: 1}}, {upsert: true, safe: false}, function(err,data){ if (err){ console.log(err); }else{ console.log("score succeded"); } } ); 

当一个upsert需要创build一个新的对象时,它在创build对象时将来自select器(第一个参数)和更新对象(第二个参数)的字段组合在一起,所以你不需要在两者中包含keyword字段。

请注意, update()在2.0驱动程序中已弃用,所以现在应该使用updateOne()updateMany()