Передайте документ со вложениями и пример итоговой группы.
Зачем
Зачем это нужно
После разворота массива проверьте, какие поля повторяются в каждой строке.
Сверьте суммы и количество объектов до оптимизации pipeline.
Вопросы
Частые вопросы
Как задать пример, который ловит двойную сумму?
«Учебный заказ имеет total=300 и две позиции: категория A на 100, B на 200. Итог по категориям должен быть A=100, B=200». Попросите вывести документы после unwind и показать источник суммы для group. Если после разворота суммировать total, получится ложное увеличение; ошибка может не вызвать исключение, поэтому контрольные числа важнее успешного выполнения запроса без предупреждений.
Что делать с пустым или отсутствующим массивом?
Заранее решите, сохранять такой заказ в результате, считать его отдельной категорией или исключать из отчёта. Поведение unwind зависит от выбранных параметров и формы поля. Попросите три документа: нормальный массив, пустой массив и отсутствующий ключ. Один общий совет «развернуть items» не задаёт нужного результата, особенно если затем считается количество заказов, а не сумма товарных позиций.
Почему pipeline может стать слишком тяжёлым?
Разворот массива увеличивает число промежуточных документов, а соединение или сортировка добавляют работу. Передайте explain, размеры и индексы. Попросите показать стадию роста и проверить возможность раннего фильтра, не меняя семантику. Перестановка стадий не всегда законна: фильтр по вычисленному полю нельзя без разбора перенести туда, где этого поля ещё нет в документе.
Как проверять перед запуском на всей коллекции?
Начните с нескольких фиксированных документов и вручную посчитайте группы. Проверьте дубликаты, отсутствующие значения и одинаковые ключи сортировки. Затем изучите план на представительном наборе. Укажите версию MongoDB: операторы и ограничения меняются. Енотик не подключается к коллекции по её названию; точность результата и стоимость запроса подтверждаются вашим выполнением и сравнением с ожидаемыми данными.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.