2017-12-07 6 views
1

방금이 문제에 봉착했습니다. 나는 두 몽구스 스키마있어 : 역할 이름 = "슈퍼 관리자"로 모든 사용자를 가져 exemple에 대한 구체적인 기준을 가진 사용자를 찾는 방법몽구스 - 기준별로 하위 문서 찾기

let userSchema = new mongoose.Schema({ 
      username: { type:String, default:null }, 
      email: { type:String, required:true }, 
      role: { type: mongoose.Schema.Types.ObjectId, ref: 'Role', required: true }, 
     }); 

let roleSchema = new mongoose.Schema({ 
     name: { type:String, default:"Player" }, 
     privileges: 
      [ 
       { 
        resource: String , 
        actions: [ String ] 
       }, 
      ], 

    }); 

질문시를 나는 어떤 결과

User.find({'role.name':'Super Admin'}).populate('role') 
    .exec() 
    .then(results => { 
     res.success(results); 
    }, error => { 
     res.error(error); 
    }) 

답변

0

하여 시도

db.roleSchema.aggregate([ 
    {$match:{name:'Super Admin'}, 
    {$lookup: {from: "userSchema",localField: "_id",foreignField: "role",as: "userSchema"}}, 
    {$unwind : "$userSchema"}, 
    {$group:{ 
      _id:'$users._id', 
      username:{$first:'$users.username'}, 
      email:{$first:'$users.email'} 
    }} 
]) 

내 대답은 도움이되었다 희망

+0

반환 VA :이 원하는 스키마 모든 사용자를 주어야한다 lue는 항상 null입니다. –

+0

{$ match : {name : XXXX}}의 역할 이름이 정확합니까? –

+0

네 맞습니다. –