首页 文章

嵌套模式中的Mongoose填充数组

提问于
浏览
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 },
  ...
}

我想在每个folderSchema里面填充itemlist(整个数组),这可能吗?

到目前为止我尝试过但不起作用:

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

这个postpost类似,但是它们存储文件夹模型并且有一个ref而不是嵌套文档 .

奖励:是否可以通过foldername仅选择一些文件夹来填充其项目列表?

2 回答

  • 0

    我想你正在寻找"deep population",请参阅population部分"Populating across multiple levels"

    将您的填充重写为:

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

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

相关问题