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

时间:2020-08-26 07:39:44

标签: mongodb mongoose mongodb-query mongoose-populate

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

0 个答案:

没有答案