2016-08-26 1 views
0

見つける:マングースで、[オブジェクトの配列]からクエリすると、私は次のように定義された2つのMongoのスキーマを持って

var userSchema = new mongoose.Schema({ 
    email: String, 
    password: String, //hash created from password 
    firstName: String, 
    lastName: String, 
    comment:{userComment:String,adminComment:String}, 
    postalAddress: String, 
    city: String, 
    state: String, 
    country: String, 
    institution: String, 
    privilege: {type: String, enum:['normal','chair','admin']}, 
    status: {type:String, enum: ['granted','removed','pending']}, 
    myConference:[{type:Schema.Types.ObjectId,ref:'Conference'}], 
    mySubmission:[{type:Schema.Types.ObjectId,ref:'Submission'}] 
}); 

var conferenceSchema = new mongoose.Schema({ 
    conferenceTitle: {type:String}, 
    conferenceDescription: String, 
    conferenceStartDate:{type:Date, default: Date.now}, 
    submissionEndDate:{type:Date}, 
    reviewEndDate:{type:Date}, 
    **conferenceMembers:[{type:Schema.Types.ObjectId,ref:'User'}]**, 
    conferenceSubmissions:[{type:Schema.Types.ObjectId,ref:'Submission'}], 
    createdBy:{type:Schema.Types.ObjectId,ref:'User'}, 
    //chairMembers:[{type:Schema.Types.ObjectId,ref:'User'}], 
    department:String 
}); 

は要件:私は、それぞれ「ユーザーのためのユニークな_idすなわち一定に一致するすべての会議のオブジェクトを取得したいです'スキーマオブジェクト。 conferenceMembers「ユーザー」の配列である私が何をしたか

オブジェクト:

var userId=req.body.userId 

**Conference.find({userId: {$in: [Conference.conferenceMembers]}},function(err,conf){** 
if(err){ 
       return res.send(500, err); 
      } 
return res.send(200,conf); 

しかし、フィルタは、私が試した、ここで働いていないよう:

それはPOSTです$ elemMatchだけでなく、運がない。

+0

あなたの 'ConferenceSchema'には' userId'フィールドはありません。正しいコードを投稿してもよろしいですか? –

+0

'find'基準に' userId'ではなく 'conferenceMembers'を使うべきです。以下の答えを見てください。 –

+0

私の悪いですが、ここのuserIDはconferenceMemebers(オブジェクトの配列)の '_id'フィールドであると仮定しています。これはreq body earliersに入れているので、ここで取得しています。 – Shanky

答えて

1

conferenceMembers内の特定のuserIdを持っているすべてのドキュメントを取得するには、あなたがこれを行うことができます:

Conference.find({conferenceMembers : userId}).exec(function(err,conf){...}); 

をあなたはあまりにもユーザーを移入したい場合は、マングースの移入を使用することができます。

Conference.find({conferenceMembers : userId}).populate('conferenceMembers').exec(function(err,conf){...}); 
+0

ありがとうRavi、それは働いた(Y) – Shanky

関連する問題