Mongodb:在每个元素上聚合数据和应用函数

时间:2017-07-04 09:43:26

标签: mongodb

我想要一份包含所有折扣产品的目录。

2个文件:

/* Catalog schema */
{
  Catalog: {
    products: [{
      type: ObjectId,
      ref: 'Product'
    }],
  discount: {
    global: { type: Number, default: 0 },
    categories: [{
      codeCategory: String,
      discount: Number
  }]
 }
}


/* Product schema */
{ 
  reference: {
    type: String,
    index: true,
    unique: true
  },
  url_photo: {
    type: String,
    default: 'http://localhost:3001/app/img/no-picture.jpg'
  },
  category: {
    type: ObjectId,
    ref: 'Category'
  },
  short_description: String,
  long_description: String,
  price: Number,
  information: String
}

折扣适用于目录中的每个产品,我如何在mongo中进行查询以获得所有具有应用折扣的产品?

我可以直接查询以获得此结果吗?

我已经用聚合检查了但是我对它很新,我看不出我该怎么做。

感谢

1 个答案:

答案 0 :(得分:2)

您可以在3.4管道中使用以下聚合。

main()$ bitbake -e | grep "^EXTRA_IMAGE_FEATURES" EXTRA_IMAGE_FEATURES="" 路径提取类别的产品数据,并使用$lookup对每个产品的价格应用折扣,并包含与所示类似的所有产品字段catalog.products字段。 $map以折扣价格覆盖产品数组。

如果在目录中找到匹配的产品类别,则添加类别级别折扣。使用information查找匹配类别的索引(如果找到),使用$addFields查找该索引处的类别,然后预测折扣金额为0。

$indexOfArray