这是我的架构:
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类似,但是它们存储文件夹模型并且有一个ref而不是嵌套文档 .
奖励:是否可以通过foldername仅选择一些文件夹来填充其项目列表?
2 回答
我想你正在寻找"deep population",请参阅population部分"Populating across multiple levels"
将您的填充重写为:
最简单的解决方案是实际检索嵌套文件夹并手动执行查找 . 然后只需调用find({_ id:{$ in:folder}});找到数组的所有元素 .