总和与子文档项目计算
我有发票型号如下总和与子文档项目计算
{
...
"itemDetails": [
{
"item": "593a1a01bbb00000043d9a4c",
"purchasingPrice": 100,
"sellingPrice": 150,
"qty": 200,
"_id": "59c39c2a5149560004173a05",
"discount": 0
}
],
"payments": [],
...
}
我需要计算项目,副总额或卖出价 - 打折。
我看到$sum
操作,但无法找到一个方法来组item._id
如果你希望得到的“内部”数组的属性组合共有,那么你总是需要$unwind
。如果您需要在通过$sum
积累之前申请“数学”,则请使用math operators。如$subtract
在这种情况下:
Model.aggregate([
{ "$unwind": "$itemDetails" },
{ "$group": {
"_id": "$itemDetails.item",
"salePrice": {
"$sum": {
"$subtract": [ "$itemDetails.sellingPrice", "$itemDetails.discount" ]
}
}
}}
])
当然假定该itemDetails.item
实际上是通用于不同的发票的项目。
它需要''_id“:”$ itemDetails.item“ – user2473015
@ user2473015呃,在你[改变你的问题的结构](https://stackoverflow.com/revisions/46844005/3)之前它是正确的。您之前拥有'item'作为子文档,并拥有自己的属性。一旦已经有答案,你就不应该改变你的问题,因为上下文会丢失。即使您需要更改实际的实现方式,也应该回复问题中的结构。 –
是的。我之前添加了人口结构。对不起。 – user2473015
组或每个数组项目?因为''item._id“'意味着你对每个数组项都意味着什么。 –
我将有很多发票,并且每个发票都是itemDetails,我需要获得物品副销售。 – user2473015