我想找到具有id的子文档并返回该子文档,而不是父文档,我的架构如下:
var coursesSchema = new mongoose.Schema({
coursename:{type:String}
});
var parentSchema = new mongoose.Schema({
courses:[coursesSchema]
});
var Parent= mongoose.model('parent', parentSchema );
module.exports = Parent;
let data = Parent.courses.id(_id);
正如我尝试使用.id来找到子文档的文档中给出的那样,它抛出错误,提示无法读取未定义的属性'id'
经过大量搜索发现this question之后,我尝试了相同的操作,显然它也返回了相同的错误。
let data = Parent['courses'].id(_id);
请帮助我,我无法接受它not
答案 0 :(得分:0)
为了获取子文档,您必须执行以下操作:
在您的情况下,您已经定义了一个模型。基于此模型,您需要:
Parent.findOne({ _id: ObjectId("abcd12345678901234567890") }, function(err, doc) {
let subDocument = doc.courses;
...
}
出现“未定义”错误的原因是因为courses
子文档没有名为id
的字段。它只有一个名为coursename
的字段。
答案 1 :(得分:0)
我们可以使用@KunalMukherjee在评论Here is a quick example to do so中指出的聚合操作来解决此问题