2016-07-21 6 views
4

角度jのmongodbドライバを使用している私のウェブサイトのために、サーバjsファイルが何回開始されたかのカウンタを作りたいと思います。ノードjsの増分カウンタmongodb

値が0の可変名付きカウンタを保存してから、サーバーが実行されるたびにその値を増やしたいとします。私のコードは以下の通りです。あなたが見ることができるように、私のコードはデータベース内のフィールドを実際に更新しません。ちょうどvarible。

そもそも...よく書いたコード全体は悪い習慣のようだ。私は基本的には{id:<>、count:0}のドキュメントを持っています.1カウントフィールドしか持っていませんが、-1(すなわち整数)より大きいすべてのcountフィールドをループしています。

データベースからこの1の値を永続化/取得する簡単な方法はありませんか?

$ incのようなものを使用して、DB内部のフィールドを簡単に更新する方法はありますか?これは、あなたが始めるのに十分でなければならない

MongoClient.connect(url, function(err, db) { 
    if (err) { 
     console.log(err); 
     return db.close(); 
    } 

    console.log("Connected correctly to DB."); 
    // update a record in the collection 
    db.users.update(
     // find record with name "MyServer" 
     { name: "MyServer" }, 
     // increment it's property called "ran" by 1 
     { $inc: { ran: 1 } } 
    ); 
    return db.close(); 
}); 

おかげ

MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    if (err) { 
     console.log(err); 
    } 
    else { 
     console.log("Connected correctly to DB."); 
     var dbusers =db.collection('users'); 
     var cursor =dbusers.find({ "count": { $gt: -1 } }); 
     cursor.each(function(err, doc) { 
      assert.equal(err, null); 
      if (doc != null) { 
       doc.count=doc.count+1; 
      } 
     } 
     ); 
    } 
    db.close(); 
}); 
+0

この 'doc.count + 1;'は何かするとしますか? –

+0

をdoc.count = doc.count + 1に更新しました。 – Matoy

+0

db(count)の値を1で増やすと仮定します。 – Matoy

答えて

2

はこれを試してみてください。それはあなたのような何かをしようとしているように聞こえる:プロパティを持つコレクション内のすべてのオブジェクトがより-1

  • 大きい「を数える」私を得る

    1. それは1

    2. によって値です増やします
    3. コレクションに保存します。

    ステップが3つあります。一括更新する必要があります。私があなたに与えた例は、単一のレコードを更新することです。

    hereは増分のためのドキュメントです。また、hereは一括更新のドキュメントです。

  • +1

    この構文は何ですか?私はあなたのコードを試したときに私は未定義になる:db.users.update(...)。 私はdb.collection( 'users')をやってしまいました。updateOne({"name": "id"}、 \t \t {$ inc:{count:1}});それを解決した 私はあなたにアフォートと$ incの+1を与えます – Matoy

    +0

    ドット表記を使ってコレクションを参照できます。 db.usersはdb.collections( "users")と同等です。私の解決策を見れば、ここで競争状態が続くかもしれない。 (また、「更新」の綴りが間違っている、「udpate」)。更新の前に接続を閉じることができます。何が起こるかを見るために今すぐdbクローズを削除してください。また、可能であれば、ここにエラーを投稿してください。私は興味がある。ありがとう。 –

    +0

    ありがとう。あなたのバージョンを使用しているときは、db.usersは未定義です。競争条件はどこにありますか?多分その問題は... – Matoy

    関連する問題