Разница в mongoose findOneAndUpdate и обновление

Чем отличается findOneAndUpdate и обновление? Оба принимают критерии запроса и документа для обновления.

Ответы

Ответ 1

Ну есть соответствующая документация для просмотра как .update(), так и .findAndModify(), который является корневым методом .findOneAndUpdate() здесь.

Но в основных отличиях есть:

  • update(). Предназначен для выполнения атомарной операции обновления против "одного или нескольких" документов, соответствующих условию запроса в коллекции. Он возвращает количество измененных документов в ответ.

  • findOneAndUpdate(): имеет ли смысл как обрабатывать статут обновления на "сингулярном" документе, так и извлекать содержимое этого "единственного" документа. Возвращаемое состояние зависит от значения "новой" опции, переданной в операцию. Где true возвращается "измененный" документ. Где false перед внесением каких-либо изменений возвращается "оригинальный" документ. Последняя форма является опцией по умолчанию.

Короче. Один из них предназначен для изменения в "объеме" и не беспокоится о содержимом документа в результате. И другое предназначено для изменения единственного документа и возврата содержимого документа в результат.

Это различие.

Ответ 2

.findOneAndUpdate выдает mongodb .findAndModify update и возвращает найденный документ (если есть) для обратного вызова или вернуть измененный документ, а не оригинал, если опция new true и .update выполнить запрос как update().