如何从mongoosejs中的另一个集合的子文档数组填充?

时间:2019-08-05 10:19:23

标签: node.js mongoose mongoose-populate

为了清楚起见,让我有两个mongoose是的schema模型

let product = new Schema({
  name: String,
  category: String,
  _id: ObjectId,
  variants: [{
    _id: ObjectId,
    attr: String,
    attrValue: String
  }]
})

let order = new Schema({
  _id: ObjectId,
  items: [{
    product: {
      type: ObjectId,
      ref: 'Product'
    },
    variant: {
      type: ObjectId,
      // ref: 'Product.Variant' // I am sure what it should be
    },
    quantity: Number
  }]
})

对于这些schema,同时从orders collection查询 我该如何populate variant

Order.findById(orderId)
  .populate('items.product', 'name category')
  .populate('items.variant')

我需要类似的东西

{
  _id: 'order-id',
  items: [
    {
      product: {
        _id: 'product-1',
        name: 'product name',
        category: 'product category'
      },
      variant: {
        _id: 'variantId',
        attr: 'attribute name',
        attrValue: 'attribute value'
      }
    }
  ]
}

使用populate是否可以实现?

当前,我必须获取填充的variants中的所有products,然后找到variant并将其手动附加到order.items.variant

0 个答案:

没有答案