我有如下发票模型
{
...
"itemDetails": [
{
"item": "593a1a01bbb00000043d9a4c",
"purchasingPrice": 100,
"sellingPrice": 150,
"qty": 200,
"_id": "59c39c2a5149560004173a05",
"discount": 0
}
],
"payments": [],
...
}
我需要计算商品总和或售价 - 折扣。
我看到了$sum
操作员,但找不到与item._id
分组的方法
如果您希望获得按数组"内部"属性分组的总和,那么您总是需要$unwind
。如果你需要在通过$sum
累加之前应用"math",那么使用数学运算符。例如在这种情况下$subtract
:
Model.aggregate([
{ "$unwind": "$itemDetails" },
{ "$group": {
"_id": "$itemDetails.item",
"salePrice": {
"$sum": {
"$subtract": [ "$itemDetails.sellingPrice", "$itemDetails.discount" ]
}
}
}}
])
当然,假设itemDetails.item
实际上是不同发票中的项目共有的。