2012-03-04 13 views
4

次のコードを使用して配列にコンテンツを追加し、2つの異なるカウンタをインクリメントします。

アイテムが適切に配列内にプッシュされ、pendingSizeが適切にインクリメントされます。しかし、unReadは決してインクリメントされません。これは増分に使用され、今日は停止しました。私のmongodbコレクション(mongohqでホストされています)のunReadフィールドの値は0(数字ではなく、文字列ではありません)に設定されています

私のコンソールを見ると「更新成功」と表示されます。

なぜそれが動作を停止したのか?

おかげ

Notifications.update({ "id" : theid}, { $push: { pending: notification}, $inc: { unRead : 1 }, $inc: { pendingSize: 1 }}, function(err){ 
        if(err){ 
         console.log('update failed'); 
         callback("Error in pushing." + result.members[i]); 
        } 
        else{ 
         console.log('update succes'); 
         callback("Success"); 
        } 
       }); 

答えて

12

はこのように、単一のネストされたオブジェクトに$株式会社の引数を組み合わせる:JSONで表現

$inc: { unRead : 1, pendingSize: 1 } 

オブジェクトが鍵となります:キーは一意である必要があります値は、 $incの複数の値を指定しようとしても機能しません。

+0

Works!それはなぜ働いていたのですか? – guiomie

+3

インクリメントの代わりにデクリメントする方法はありますか? $ decのように? –

+9

@AdrienSchuler - '{$ inc:-1}'のように、$ incに負数を使用するだけです – mpobrien

関連する問題