3
我有一個數據模型,其中每個數據模型都有一個產品文檔數組。 每個產品文檔有一個價格和一個isTaxable:布爾字段彙總小計和一個TaxableSubTotal在同一個彙總中
我可以做的每個包(product.price $ sum)的小計的聚合,但我不知道如何「也」得到在taxSubtotal在同一aggreation,這將包括獲取product.price的一個單獨的總和,其中product.isTaxable是真的
這是包記錄的樣子:
// Package
{
_id: 1,
packTitle: "Package 1",
productCategory: {_id:90, label:"Clothing"},
products: [
{ _id:500,
"prodTitle": "Product 1",
"price": 2.99,
"isTaxable" : true
},
{ _id:501,
"prodTitle": "Product 2",
"price": 4.99,
"isTaxable" : false
},
{ _id:502,
"prodTitle": "Product 3",
"price": 6.99,
"isTaxable" : true
},
{ _id:503,
"prodTitle": "Product 4",
"price": 10.99,
"isTaxable" : false
}
]
}
我能得到subTotal:
db.prodPacks.aggregate([
{$match: { "productCategory._id": {$in:[90]} }}
, {$unwind: '$products'}
, {$group: {
'_id': {'packId':'$_id', 'packTitle':'$packTitle'},
'packSubtotal': {$sum: '$products.price' },
'products':{'$push':'$products.title'}
}
}
])
我有packSubtotal,我想也可以得到一個taxableSubtotal(其中isTaxable爲true的product.price的總和,如果可能的話在同一個聚合中。
我知道我可以用isTaxable上的匹配做一個單獨的聚合,然後獲得小計並手動將它們加在一起,但我很好奇是否有辦法在一個聚合中完成所有操作。
非常感謝! – Shar