MongoDB updateOne: обновление документов и анализ результата

Сравнение updateOne и update

Метод updateOne отличается от update только возвращаемым сервером результатом. Синтаксис обоих методов идентичен. updateOne возвращает объект, содержащий информацию о выполнении запроса.

Например, результат может выглядеть так: { acknowledged: true, matchedCount: 1, modifiedCount: 1 }. Это означает, что найден один документ, и он успешно обновлён.

Важно: результат updateOne не содержит ID обновлённого документа.

Другой пример результата: { acknowledged: true, matchedCount: 1, modifiedCount: 0 }. Это означает, что документ, удовлетворяющий условиям запроса, найден, но обновление не потребовалось, так как данные уже соответствовали заданным. Если matchedCount равен 0, запрос не вернул ни одного документа.

Практический пример

Рассмотрим пример. Есть коллекция документов с полем processed со значением false. Задача — изменить это поле на true во втором документе, где cartId равен 325.

Используем updateOne. Условие запроса: cartId: 325. Обновляем поле processed на true. Список аргументов остаётся прежним: запрос, объект обновления и опции.

Результат выполнения: { acknowledged: true, matchedCount: 1, modifiedCount: 1 }. Один документ найден и изменён.

Проверим: документ с cartId: 325 имеет поле processed со значением true.

Повторим операцию. Результат: { matchedCount: 1, modifiedCount: 0 }. Документ найден, но обновление не потребовалось, так как processed уже равен true.

Изменим processed на false для дальнейших экспериментов. После повторного запроса документ будет иметь processed: false.

Метод updateOne в MongoDB — удобный способ обновления одного документа с подробной информацией о результате. Понимание различий между updateOne и update, а также правильная интерпретация возвращаемых данных важны для эффективной работы с базой данных.

Что будем искать? Например,программа