【问题标题】:Mongoose populating array inside nested schemaMongoose 在嵌套模式中填充数组
【发布时间】:2017-03-01 13:39:02
【问题描述】:

这是我的架构:

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

我想在每个文件夹架构中填充项目列表(整个数组),这可能吗?

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

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

这个post 和这个post 相似,但它们存储文件夹模型并且有一个引用而不是嵌套文档。

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

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-populate


    【解决方案1】:

    我认为您正在寻找“深层人口”,请参阅population 部分“跨多个级别的人口”

    将您的填充重写为:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 2016-10-12
        • 2020-06-07
        • 2019-12-06
        • 2018-06-07
        • 2019-09-23
        相关资源
        最近更新 更多