Я нахожусь в середине сложного запроса агрегации (с поиском и многими этапами групп / раскрутки) и сталкиваюсь с проблемой объединения двух разных массивов из разных полей.
Как сейчас, после одного из этапов ( в середине или после поиска моего большого запроса) У меня есть следующий вывод:
{
_id: 1,
quantity: [2, 1, 3]
reagents: [
{name: "FirstItem", other_field: ... },
{name: "SecondItem", other_field: ... },
{name: "ThirdItem", other_field: ... }
]
}
И я хочу:
_id: 1,
reagents: [
{name: "FirstItem", quantity: 2 },
{name: "SecondItem", quantity: 1 },
{name: "ThirdItem", quantity: 3 }
]
Таким образом, каждое значение [quantity]
, которое я хочу добавить каждый объект внутри [reagents]
как поле в соответствии с его индексом, например, первый {object}
внутри reagents
должен иметь первую element
из [quantity]
схему с индексами массива):
quantity: [2, 1, 3, ... n]
↓ ↓ ↓ ↓
reagents: [1, 2, 3, ... n]
ПРОБЛЕМА:
Я не могу сделать это после или до агрегации, потому что:
У меня нет необходимых данных, причина это результат поиска из разных коллекций.
Я не могу сделать это после, потому что сразу после этого я должен $group
данные по другому полю, поэтому [reagents]
порядок сортировки был потерян и не может быть восстановлено.
UPD : * 1 040 * Я понимаю, что мог (и, вероятно, должен использовать $unwind
stage для [reagents]
, но я не нашел каких-либо соответствующих операторов этапа агрегации в Mon go Manual . Так что, если вы знаете нужный, пожалуйста, укажите мне.