在条件中查询mongoDB中的join 2表

时间:2019-05-22 11:18:08

标签: mongodb mongoose mongodb-query

我有2个表:函数,权限

db.Function.insert(
[{
    _id: 'DASHBOARD',            
    name: 'Dash Board',  
},
{
    _id: 'HOME',           
    name: 'HOME PAGE',  
}]);

db.Permission.insert(
[{
    function: 'DASHBOARD',            
    role: 'ADMIN',
    read: true,  
},
{
    function: 'DASHBOARD',            
    role: 'MEMBER',
    read: true, 
},
{
    function: 'HOME',            
    role: 'MEMBER',
    read: false, 
},
{
    function: 'HOME',            
    role: 'ADMIN',
    read: true, 
}
]);

我如何在条件为MEMBER的情况下获得所有功能并读取为真。 我试试这个

db.function.aggregate([
{ $lookup: {
  from: 'permission',
  let: { functionId: '$_id' },
  pipeline: [
    { $match: {
      $expr: { $and: [
        { $eq: ['$function', '$$functionId'] },
        { $eq: ['$role', 'MEMBER'] },
      ] },
    } },
    { $project: { read: 1, _id: 0 } },
  ],
  as: 'perm',
} },
]);

我需要做什么?为了获得读取为真的函数,我想要的数据会像这样

[{
    _id: 'HOME',            
    name: 'HOME PAGE',  
}]

0 个答案:

没有答案