猫鼬查询以填充数组中的数据

问题描述

我试图根据权限从用户集合中过滤数据。添加查找和投影后,我得到的数据显示在下面的结果中。现在,我必须进行查询以根据权限名称过滤数据。因此,我尝试传递诸如{ $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',permission:['user','customer]
        },{
        _id: '5f007603bd530928fc0c444',permission:[ 'customer]
        }]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)