我有两个不同的对象
用户
UserGroup
用户
{
_id:1,
Name:'name',
Usergroup:
[
{
'$ref' : 'UserGroup',
'$id' : 1
},
{
'$ref' : 'UserGroup',
'$id' : 2
}]
}
用户组
{
_id:1,
name: 'admin'
},{
_id:2,
name: 'admin1'
}
我需要获取用户组集合以及用户列表,任何人都可以帮助我编写连接查询。
答案 0 :(得分:0)
您可以在mongo中使用$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
使用该ID。