我正在写一个对关键字进行评分的小应用程序。因此,如果“贝鲁特”和“教育”进入,如果以前没有见过,我想创建一个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 {
您是否可以使用增量创建一个全新的文档?
答案 0 :(得分:24)
您的一般方法是正确的,但正如错误消息所示,您的代码中存在语法问题。
请改为尝试:
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需要创建一个新对象时,它会在创建对象时组合选择器(第一个参数)和更新对象(第二个参数)中的字段,因此您不需要包含keyword
字段在两者中。
请注意,2.0驱动程序中不推荐使用update()
,因此您现在应该使用updateOne()
或updateMany()
。