Как использовать $ add внутри функции update () в Mongo? - PullRequest
3 голосов
/ 01 января 2012

Я пытаюсь обновить этот документ;

{"dealId" : 201, "commitCount" : 3 }

... Мне просто нужно увеличить commitCount на 1, поэтому я пытаюсь использовать функцию add [] внутри update (), но не могу заставить ее работать ...

db.deal.update( {dealId:201},{$set:{commitCount:{$add:['$commitCount',1]} }} )

ошибка, которую я получаю от Mongo: not okForStorage, не знаю, что это значит, поле не обновляется,

1 Ответ

8 голосов
/ 01 января 2012

Эта ошибка означает, что вы пытаетесь использовать имя поля, которое недопустимо в MongoDB - это будет либо имя поля с точкой (".") В нем, либо имя поля, содержащее знак доллара.

$set используется для полной замены поля, поэтому вы говорите «заменить содержимое поля commitCount на документ {$add: ['$commitCount', 1]}», который является недействительным документом.

Чтобы атомарно увеличивать или уменьшать значение поля (при условии, что текущее значение поля является числом), используйте модификатор $inc:

db.deal.update({dealId: 201}, {$inc: {commitCount: 1}})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...