В чем смысл использования {} в качестве критерия для функции обновления

#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-м аргументом).

В противном случае будет обновлен только первый документ (в естественном порядке монго)