2012-03-04 3 views
4

Я использую следующий код, чтобы добавить содержимое в массив и увеличить два разных счетчика.

Элемент правильно помещен в массив, а ожидающий этап правильно увеличивается. Но unRead никогда не увеличивается. Он использовался для увеличения, а сегодня он прекратился. Значение поля unRead в моей коллекции mongodb (размещено на mongohq) равно 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

Объединить арг в $ вкл в один вложенный объект, как это:

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

Объекты, представленные в формате JSON являются ключ: значение, где ключи должны быть уникальными, поэтому попытка указать несколько значений для $inc не будет работать.

+0

Работы! просто, но не знаю, почему он работал! – guiomie

+3

Вместо приращения, есть ли способ уменьшить? как $ dec? –

+9

@AdrienSchuler - просто используйте $ inc с отрицательным числом - например '{$ inc: -1}' – mpobrien