#mongodb
#mongodb
Вопрос:
db.collection.update( criteria, objNew, upsert, multi )
См. Обновление
Я видел следующее использование {} внутри update в качестве критерия.
collection.update({}, {$push : { x : 1}})
В чем смысл {} здесь? Означает ли это отсутствие критериев?
Ответ №1:
Первый аргумент update
указывает критерии, используемые для поиска документов, подлежащих обновлению. Установка первого аргумента в {}
, будет соответствовать каждому документу в коллекции. По умолчанию будет обновлено только первое совпадение. Чтобы обновить все сопоставленные документы, установите multi
значение true.
Комментарии:
1. Затрагиваются не все документы. Если вы хотите получить эти результаты, вы должны вместо этого применить следующее утверждение
db.collection.update({}, {$push : { x : 1 }}, false, true)
. Имейте в виду, что по умолчанию update() изменяет только первый сопоставленный объект.2. Отредактируйте свой ответ, чтобы включить этот бит информации. Это странное значение по умолчанию.
Ответ №2:
То, что сказал Максенландер, верно, только если вы укажете значение multiple равным true (что является 4-м аргументом).
В противном случае будет обновлен только первый документ (в естественном порядке монго)