MongoDB: Объединение $set и $unset в updateOne

Рассмотрим комбинирование нескольких операторов в одном запросе обновления.

Комбинирование операторов $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, уменьшая количество запросов к базе данных.

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