Рассмотрим комбинирование нескольких операторов в одном запросе обновления.
Комбинирование операторов $set и $unset
Пример использования операторов $set и $unset в одном объекте обновления (второй аргумент метода update). $set устанавливает ключ-значение, $unset удаляет ключ.
Изменим документ с индексом index. В этом документе processed: false, поле card пустое. Используем метод updateOne с полем query: index. Сначала установим newOrder: true.
Результат: добавлено поле newOrder со значением true.
Теперь объединим $set и $unset в одном запросе.
db.collection.updateOne(
{ index: 1 },
{
$set: {
cardID: 4354,
'customer.name': 'Samantha Larsen',
'customer.email': 'sLarson@test.com'
},
$unset: {
newOrder: ""
}
}
);
Ожидаемый результат: установка полей в документе с index и удаление поля newOrder. Изначальное состояние документа: processed: false, card пустой, newOrder: true. После обновления: matchedCount: 1 и modifiedCount: 1. Результат запроса find: присутствуют cardID (целое число) и customer (вложенный документ с полями email и name), поле newOrder удалено.
Комбинирование нескольких операторов обновления в одном запросе упрощает изменение документов в MongoDB, сокращая количество запросов. Это применимо не только к $set и $unset, но и к другим операторам, например, $rename.
Комбинирование операторов обновления в одном запросе эффективно изменяет документы в MongoDB, уменьшая количество запросов к базе данных.