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

123. Клиенты с активным вкладом от миллиона

Лёгкая

В clients у каждого клиента массив products: вклады, карты, кредиты. У элемента — type, amount_rub и status.

Персональный менеджер звонит клиентам с активным вкладом на 1 000 000 ₽ и больше. Все три условия должны выполняться для одного и того же продукта. Верните client_id и city по возрастанию client_id.

В работе: Сегменты клиентов по продуктам, поиск заказов с нужной позицией, фильтры по вложенным массивам.

MongoDB · MongoDB 8.0.20

Коллекции

clients — клиент и его продукты

ПолеТипЧто значит
client_idintid клиента
citystringгород
productsarray<object>type: вклад / карта / кредит, amount_rub, status: active / closed

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

clients

[
 {
  "city": "Казань",
  "products": [
   {
    "type": "вклад",
    "status": "active",
    "amount_rub": 1500000
   }
  ],
  "client_id": 1
 },
 {
  "city": "Самара",
  "products": [
   {
    "type": "вклад",
    "status": "active",
    "amount_rub": 300000
   },
   {
    "type": "кредит",
    "status": "active",
    "amount_rub": 2000000
   }
  ],
  "client_id": 2
 },
 {
  "city": "Екатеринбург",
  "products": [
   {
    "type": "вклад",
    "status": "closed",
    "amount_rub": 1200000
   },
   {
    "type": "вклад",
    "status": "active",
    "amount_rub": 50000
   }
  ],
  "client_id": 3
 }
]

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

[
 {
  "city": "Казань",
  "client_id": 1
 }
]
Как проверяем Запрос — JSON: имя коллекции и стадии aggregate, как в db.коллекция.aggregate([...]). Выполняем его в браузере движком агрегаций на 4 наборах документов: пример выше и скрытые — с пропущенными полями, null и пустыми коллекциями. Порядок документов важен, порядок полей внутри документа — нет. $out и $merge запрещены.
{"collection": "clients", "pipeline": [ … ]}
$match$elemMatchвложенные массивы

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

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