Ответ 1
Ваш общий подход прав, но, как следует из сообщения об ошибке, у вас есть синтаксическая проблема в вашем коде.
Попробуйте это вместо:
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
в оба.
Обратите внимание, что update()
устарело в драйвере 2.0, поэтому теперь вы должны использовать либо updateOne()
, либо updateMany()
.