2012-12-10 15 views
10

私は、キーワードをつける小さなアプリケーションを書いています。 「ベイルート」と「教育」が入力された場合は、前に見たことがない場合は、mongoのエントリを作成し、1のスコアを付けたいと思います。もしあれば、スコアを1つ増やしたい。私は1つの更新コマンドでこれをやろうとしていますが、間違っていると思います。Node.js MongoDB Upsertアップデート

  • ランキングデータベース
  • "キー" を表すオブジェクトを使用すると、増分新しい文書を作成することはできません
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 {

キーワードですか?

答えて

18

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

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

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()のいずれかを使用するようにしてください。

+0

すばらしい!チャーのように働いた。そう簡単に! – mradfo21

関連する問題