В clients у каждого клиента массив products: вклады, карты, кредиты. У элемента — type, amount_rub и status.
Персональный менеджер звонит клиентам с активным вкладом на 1 000 000 ₽ и больше. Все три условия должны выполняться для одного и того же продукта. Верните client_id и city по возрастанию client_id.
В работе: Сегменты клиентов по продуктам, поиск заказов с нужной позицией, фильтры по вложенным массивам.
MongoDB · MongoDB 8.0.20
Коллекции
clients — клиент и его продукты
| Поле | Тип | Что значит |
|---|---|---|
client_id | int | id клиента |
city | string | город |
products | array<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": [ … ]}
Источник: на данных банка: продукты клиента в одном документе. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить часть pipeline. На зачёт не влияет.
Здесь появится результат отправки.