MongoDB: безусловные обновления? - PullRequest
54 голосов
/ 08 апреля 2011

Это кажется глупым вопросом, но я еще не нашел ответа. Если бы я просто хотел добавить одно и то же значение field-> в КАЖДУЮ запись в коллекции MongoDB, какой будет подходящая команда оболочки для этого? Я попытался выполнить мультиобновление с пустым запросом ({}), но это привело к этой ошибке:

мультиобновление работает только с $ операторами

Я немного озадачен тем, как обойти это. Есть предложения?

1 Ответ

108 голосов
/ 08 апреля 2011

Ошибка говорит сама за себя: вы можете изменять только несколько документов, используя операторы-модификаторы $ .У вас, вероятно, было что-то вроде этого:

> db.coll.update({ }, { a: 'b' }, false, true);

Что обычно заменяет первый объект в коллекции на { a: 'b' }, если multi было бы ложным.Вы не захотите заменять все объекты в вашей коллекции одним и тем же документом!

Вместо этого используйте оператор $set :

> db.coll.update({ }, { '$set': { a: 'b' } }, false, true);

Это установитсвойство a каждого документа (создавая его по мере необходимости) до 'b'.

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