这是我的架构:
var userSchema = {
folders : [ folderSchema ],
...
}
var folderSchema = new mongoose.Schema({
itemlist : [{ type: String, ref: 'Item', required: true }],
foldername : { type: String},
...
});
// Item model
var itemSchema = {
name: { type: String },
...
}
我想在每个folderSchema中填充itemlist(整个数组),这可能吗?
到目前为止我尝试过的但是没有工作:
userModel.findOne({ _id: userId }, null, callback).populate({
path: 'folders.$.itemlist',
select: 'name'
});
此post和此post类似,但它们存储文件夹模型并具有引用而不是嵌套文档。
奖励:是否可以通过foldername仅选择一些文件夹来填充其项目列表?
答案 0 :(得分:0)
我认为您正在寻找“深度人口”,请参阅population部分“填充多个级别”
将您的填充内容重写为:
userModel.findOne({ _id: userId }, null, callback).populate({
path: 'folders',
populate: { path : 'itemlist'}
});
答案 1 :(得分:0)
最简单的解决方案是实际检索嵌套文件夹并手动执行查找。然后只需调用find({_ id:{$ in:folder}});找到数组的所有元素。