繁体   English   中英

用猫鼬从[对象数组]查询

[英]Querying from [array of objects] with mongoose find

我有两个定义如下的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匹配的会议对象,即每个“用户”模式对象唯一的_id。 ConferenceMembers是“用户”对象的数组

我做了什么:

这是一个POST:

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);

但是,过滤器似乎在这里不起作用,我也尝试了$ elemMatch,但是没有运气。

要在conferenceMembers获取所有具有特定userId的文档,您可以执行以下操作:

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

如果您也想填充用户,则可以使用猫鼬填充。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM