Вы можете использовать $lookup
в монго, чтобы объединить две коллекции.
db.user_collection_name.aggregate(
{
$project: {
group_id: {
$map: {
input: {
$map: {
input:"$userGroup",
in: {
$arrayElemAt: [{$objectToArray: "$$this"}, 1]
},
}
},
in: "$$this.v"}},
"name":1
}
},
{$lookup:
{
from: userGroup_collection_name,
localField: "group_id",
foreignField: _id,
as: users
}
})
Пояснение:
Внутри агрегатора тип DBRef BSON может обрабатываться как объект с двумя или тремя полями (ref, id и DB). Поэтому нам нужно абстрагировать ключ, значение из поля dbref. Поэтому нам нужна функция $project
, чтобы взять Id
, тогда мы можем $lookup
, используя этот идентификатор.