我试图根据权限从用户集合中过滤数据。添加查找和投影后,我得到的数据显示在下面的结果中。现在,我必须进行查询以根据权限名称过滤数据。因此,我尝试传递诸如{ $match: { "permission.per_name": {$regex: '.*'+ "cust" +'.*', $options: 'i'}}
之类的查询,但这无法解决。下面我提到了我的集合(用户和权限),查找和投影。谁能告诉我此聚合查询出了什么问题?
我的用户集合
{
_id: '5f007603bd530928fc0c000',
name: 'sampe',
permission:['5f007603bd530928fc0c0281', '5f007603bd530928fc0c02812]
}
我的权限组集合
[
{
_id: '5f007603bd530928fc0c0281',
per_name: 'user',
},
{
_id: '5f007603bd530928fc0c02812',
per_name: 'customer'
},
{
_id: '5f007603bd530928fc0c02813',
per_name: 'vendor'
}
]
查找:
lookups: [
{
from: 'PermissionGroup',
localField: 'permission',
foreignField: '_id',
as: 'permission',
model: 'PermissionGroupModel',
},
],
投影:
projection: {
name: true,
permission: {
$map: {
input: '$permission',
as: 'permission_group',
in: '$$permission_group.per_name',
},
},
},
结果
[
{
_id: '5f007603bd530928fc0c000',
name: 'sampe',
permission:['user', 'customer]
},
{
_id: '5f007603bd530928fc0c444',
name: 'sampe',
permission:[ 'customer]
}]