2016-10-19 34 views
0

内填充猫鼬数组这是我的架构:嵌套模式

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 }, 
    ... 
} 

我想填充ITEMLIST(整个数组)每个folderSchema内,这可能吗?

我到目前为止已经试过,但不起作用:

userModel.findOne({ _id: userId }, null, callback).populate({ 
    path: 'folders.$.itemlist', 
    select: 'name' 
}); 

postpost是相似的,但它们存储的文件夹车型,并有裁判,而不是嵌套的文件。

奖励:是否可以通过文件夹名称只选择一些文件夹来填充他们的项目列表?

回答

0

我认为你正在寻找“深人口”,看到population部分

“多个层面填充”

重写你填入到:

userModel.findOne({ _id: userId }, null, callback).populate({ 
    path: 'folders', 
    populate: { path : 'itemlist'} 
}); 
0

最简单的解决方法是实际检索嵌套文件夹并手动执行查找。然后,只需调用find({_ id:{$ in:folder}});查找数组的所有元素。