Вы можете попробовать операцию обновления и, если возвращенное значение равно null
(совпадение не найдено) - отправить сообщение пользователю приложения.
findOneAndUpdate(filter, update, options, callback)
имеет findAndModifyCallback(error, result)
, а значение result
будет null
, если запрос на обновление не совпадет. См. Примечание ниже для параметра findOneAndUpdate
returnOriginal
:
Параметр returnOriginal
является логическим true
по умолчанию. Если документы не найдены, значение будет null
по умолчанию (returnOriginal: true), даже если документ был отклонен; когда false
, возвращает обновленный документ, а не оригинал. Установите значение false , и в случае, если вы используете опцию upsert, так что значение будет null
в случае отсутствия совпадения.
Итак, если значение результата null
, это означает, что запрос не совпал и обновление не произошло, и вы можете вернуть соответствующее сообщение. Как? Вам все еще нужно выполнить запрос find
и:
if (id not found)
send message "Document not found."
else // name not found
send message "Name is incorrect."
Если вы не хотите снова запускать запрос find
, просто отправьте generi c сообщение пользователю приложения.
Транзакции?
Если ваше развертывание является кластером с набором реплик или сегментированным, то возможны транзакций . Транзакции с примечаниями доступны только в последних версиях MongoDB (4.0 для наборов реплик и 4.2 для сегментированных кластеров).