使用计算字段计算MongoDB $ {project中的新字段

时间:2017-05-09 09:57:27

标签: javascript node.js mongodb mongoose mongoose-populate

我的收藏集Item包含字段_idpriceproject以及包含字段Project的收藏集_idname

这些商品的价格不同,因此我希望按price对商品进行分组,并计算每组中的商品数量,并将值保存为quantity

然后我想计算quantityprice以获得总金额。但我想计算一些费用。费用应计算为totalPrice * (1 + 10/100) + 5 * quantity

所以我尝试使用$project计算每笔费用并且有效,但我无法使用总价格(包括费用)创建最终计算字段。我想我无法在同一$project中使用计算字段?

我使用了以下代码,但totalPriceWithFees变为0:

Item.aggregate([
  {
    $group: {
      _id: {
        project: '$project',
        price: '$price'
      },
      quantity: { $sum: 1 }
    }
  },
  {
    $project: {
      quantity: 1,
      totalPriceWithoutFees: {
        $multiply: ['$_id.price', '$quantity']
      },
      feesPercentage: {
        $multiply: ['$_id.price', 0.1]
      },
      feesAbsolute: {
        $multiply: ['$quantity', 5]
      },
      fees: {
        $sum: ['feesPercentage', 'feesAbsolute']
      },
      totalPriceWithFees: {
        $sum: ['$totalPriceWithoutFees', '$fees']
      },
    }
  }
  {
    $lookup: {
      from: 'Project',
      localField: '_id.project',
      foreignField: '_id',
      as: 'project'
    }
  }
])

另外,我想填充项目。我只保存了项目ID,所以我需要填充以获取项目名称。我不确定在Mongoose中是否可以使用正常的populate(),所以我尝试使用$lookup,但它也不起作用。字段project变为空。

0 个答案:

没有答案