18

キーワードを採点する小さなアプリケーションを書いています。したがって、「ベイルート」と「教育」が入力された場合、それらが以前に表示されたことがない場合は、モンゴエントリを作成し、スコアを1にします。入力されている場合は、スコアを1つ増やします。 。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 {

増分で新しいドキュメントを作成できませんか?

4

1 に答える 1

26

あなたの一般的なアプローチは正しいですが、エラー メッセージが示すように、コードに構文上の問題があります。

代わりにこれを試してください:

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

アップサートで新しいオブジェクトを作成する必要がある場合、オブジェクトの作成時にセレクター (最初のパラメーター) と更新オブジェクト (2 番目のパラメーター) のフィールドが結合されるためkeyword、両方にフィー​​ルドを含める必要はありません。

update()は 2.0 ドライバーでは非推奨になっているため、現在は または のいずれupdateOne()かを使用する必要がありますupdateMany()

于 2012-12-10T20:17:01.647 に答える