filnor
@filnor
¯\_( ツ)_/¯

Как сделать двухуровневую агрегацию в запросе?

Добрый день!
Сейчас имеется 3 коллекции, с таким форматом:
let item = {
    _id: "...",
}

let itemGroup = {
    _id: "..."
}

let relation = {
    item_id: "...",
    group_id: "..."
}


Раньше эта связь была one-to-one и в item был group_id, через связь с которым мы получали все поля при помощи агрегации вот такого типа:
group.aggregate([
				{
					$project: {
						_id: {
							$toString: '$_id',
						},
						title: 1,
						order: 1,
					},
				},
				{
					$lookup: {
						from: 'fields',
						localField: '_id',
						foreignField: 'group_id',
						as: 'fields',
					},
				},
			]);


Не могу понять, как сделать одним запросом двухуровневую агрегацию - вначале получить все связи, а через нее все элементы. Сейчас разделил это на два запроса, но понмание того что это можно сделать одним прямо спать не дает)
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Я не совсем вник во все, но мне кажется вам нужен этот оператор https://docs.mongodb.com/manual/reference/operator...

Т.е. у вас будет такой пайплайн: $project, $lookup, $unwind, $lookup.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы