我正在尝试选择所有引用一个组的用户,这些组引用的权限已将“有效”设置为true(可能是多个)。为了实现这一点,我计划使用带有查找的聚合。
db={
"users": [
{
"_id": "1",
"groups": [
"2"
]
},
{
"_id": "2",
"groups": [
"1"
]
}
],
"group": [
{
"_id": "1",
"permissions": [
"12",
"3"
]
},
{
"_id": "2",
"permissions": [
"3",
"2"
]
}
],
"permission": [
{
"_id": "12",
"valid": true
},
{
"_id": "3",
"valid": true
},
{
"_id": "2",
"valid": true
}
]
}
我想不出一种有效/简单的方法来做到这一点。
我有2个主意:
有什么想法或意见吗?
$unwind
在本地字段中查找,group
用permissions
响应替换该字段,因为在下一阶段不需要它db.users.aggregate([
{
$lookup: {
from: "group",
localField: "groups",
foreignField: "_id",
as: "group"
}
},
{
$lookup: {
from: "permission",
localField: "group.permissions",
foreignField: "_id",
as: "group"
}
},
{ $match: { "group.valid": true } },
{ $unset: "group" }
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句