Чем отличается findOneAndUpdate и обновление? Оба принимают критерии запроса и документа для обновления.
Разница в mongoose findOneAndUpdate и обновление
Ответ 1
Ну есть соответствующая документация для просмотра как .update(), так и .findAndModify(), который является корневым методом .findOneAndUpdate() здесь.
Но в основных отличиях есть:
-
update(). Предназначен для выполнения атомарной операции обновления против "одного или нескольких" документов, соответствующих условию запроса в коллекции. Он возвращает количество измененных документов в ответ.
-
findOneAndUpdate(): имеет ли смысл как обрабатывать статут обновления на "сингулярном" документе, так и извлекать содержимое этого "единственного" документа. Возвращаемое состояние зависит от значения "новой" опции, переданной в операцию. Где
trueвозвращается "измененный" документ. Гдеfalseперед внесением каких-либо изменений возвращается "оригинальный" документ. Последняя форма является опцией по умолчанию.
Короче. Один из них предназначен для изменения в "объеме" и не беспокоится о содержимом документа в результате. И другое предназначено для изменения единственного документа и возврата содержимого документа в результат.
Это различие.
Ответ 2
.findOneAndUpdate выдает mongodb .findAndModify update и возвращает найденный документ (если есть) для обратного вызова или вернуть измененный документ, а не оригинал, если опция new true и .update выполнить запрос как update().