Итак, я новичок в структуре агрегации. У меня есть 2 коллекции с этими документами:
Пользователи
{
'_id': ObjectId(user1),
'name': 'Name1',
'event': ObjectId(event1)
},
{
'_id': ObjectId(user2),
'name': 'Name2',
'event': ObjectId(event2)
},
{
'_id': ObjectId(user3),
'name': 'Name3',
'event': ObjectId(event1)
}
События
{
'_id': ObjectId(event1),
'name': 'Event2',
'type': 'Party'
},
{
'_id': ObjectId(event2),
'name': 'Event2',
'type': 'Meeting'
}
Ожидаемый результат
[
{
'_id': ObjectId(user1),
'name': 'Name1',
'event': 'Party'
},
{
'_id': ObjectId(user2),
'name': 'Name2',
'event': 'Meeting'
},
{
'_id': ObjectId(user3),
'name': 'Name3',
'event': 'Party'
}
]
Итак, как вы видите, из приведенного выше объяснения я хочу сгруппировать пользователей и возвращать пользователей в зависимости от события, которое они посетили.
что я сделал до сих пор (агрегирование по пользователям)
[
{
"$lookup":
{
"from": "events",
"localField": "event",
"foreignField": "_id",
"as": "Events"
}
},
{
"$unwind": "$Events"
},
{
"$group":
{
"_id":
{
"type": "$Events.type"
}
}
}
]
Я только получаю документы о мероприятии. Выход:
{ 'type':'Party'},
{'type': 'Meeting'}
Может, кто-нибудь подскажет, как группировать документы в коллекции по полю из документа в другой коллекции?
Thankyou!