我正试图围绕Mongoose Populate语法和结构。我有两个模式。 父包含子引用数组。
const Parent = new Schema({
name: String,
children: [{type: Schema.ObjectId, ref: 'Child'}]
});
const Child = new Schema({
name: String
});
要填充父,我一直在这样做:
Parent
.findById(parent.id)
.populate('children')
.exec( (err, parent) => {
parent.children = arrayOfInsertedChildDocs;
parent.save();
});
家长引用保存,但有没有办法查询引用某个孩子的父母?例如,所有在子数组中引用ID为 ObjectId('xxxxxxxxx')的孩子的父母?
这是我一直在尝试的但是它没有用。
let query = { "children._id": mongoose.Types.ObjectId(childId) };
Parent.find(query, (err, parents) => {
//process parents
})
这可能吗?
答案 0 :(得分:0)
您想在MongoDB数组中搜索元素。假设你有一份文件。
{
name :"harry",
childen:["10ahhdj20","9ajskjakj9","8aiisu38","2jjaksjah0"]
}
因此,要在数组列表中搜索,可以使用它。
db.parents.find( { tags: { $all: [ "10ahhdj20", "812922dd" ] } } )
你会得到所有有这些孩子的父母。
答案 1 :(得分:0)
想出来。从嵌套数组中的子ID获取 Parent 的查询是:
Parent
.find({"children":ObjectId(child.id)})
.populate("children")
.exec((err,parents) => {
//process parents
});