Войти Регистрация
Data base

122. Карточки без поля «бренд»

Лёгкая

В products лежат карточки товаров. Старый импорт из CSV не создавал поле brand, если колонка была пустой. В новом интерфейсе продавец явно выбирает «Без бренда», и тогда в документе brand: null.

Контент-команде нужны только карточки старого импорта — те, где поля brand нет вообще. Верните sku и title, по возрастанию sku.

В работе: Миграции схемы, чистка данных после импорта, поиск документов старой версии.

MongoDB · MongoDB 8.0.20

Коллекции

products — одна карточка — один документ

ПолеТипЧто значит
skuintартикул
titlestringназвание
brandstring / null / нет полябренд
price_rubintцена

Пример: документы

products

[
 {
  "sku": 1001,
  "brand": "Redmond",
  "title": "Чайник Redmond 1,7 л",
  "price_rub": 2490
 },
 {
  "sku": 1002,
  "title": "Кабель USB-C 1 м",
  "price_rub": 290
 },
 {
  "sku": 1003,
  "brand": null,
  "title": "Носки хлопок, 5 пар",
  "price_rub": 590
 },
 {
  "sku": 1004,
  "title": "Пакеты для заморозки 3 л",
  "price_rub": 149
 }
]

Ожидаемый ответ

[
 {
  "sku": 1002,
  "title": "Кабель USB-C 1 м"
 },
 {
  "sku": 1004,
  "title": "Пакеты для заморозки 3 л"
 }
]
Как проверяем Запрос — JSON: имя коллекции и стадии aggregate, как в db.коллекция.aggregate([...]). Выполняем его в браузере движком агрегаций на 5 наборах документов: пример выше и скрытые — с пропущенными полями, null и пустыми коллекциями. Порядок документов важен, порядок полей внутри документа — нет. $out и $merge запрещены.
{"collection": "products", "pipeline": [ … ]}
$match$existsотсутствующее поле против null$type

Источник: на данных маркетплейса: карточки товаров. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.