update - Node.js モンゴDB アップサート更新



node js collection find (1)

キーワードを採点する小さなアプリケーションを書いています。 「ベイルート」と「教育」が入力された場合、それらが以前に見たことがなければ、私はmongoエントリを作成し、それらに1のスコアを与えたいと思います。 。 私は1つの更新コマンドでこれをやろうとしています、しかし私はそれを間違ってしているかもしれないと思います。

  • ランキングはデータベースを表すオブジェクトです
  • "key"がキーワードです
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 {

新しい文書を少しずつ作成していくことはできませんか。

https://src-bin.com


Answer #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が新しいオブジェクトを作成する必要があるとき、オブジェクトを作成するときにセレクタからのフィールド(最初のパラメータ)と更新オブジェクト(2番目のパラメータ)を組み合わせるので、両方にkeywordフィールドを含める必要はありません。

update()は2.0ドライバでは推奨されていないので、今度はupdateOne()またはupdateMany()使用してください。





upsert