如何通过mongodb中的聚合函数从组中查找最大值?我想找出最大总金额及其对应的比尔号。
代码片段如下:
db.PurchaseDetails.aggregate([
{ "$unwind": "$Items" },
{ "$group": {
"_id":
{
"BillNo":"$BillNo",
"DateP":"$DateP",
"Type":"$Type"
},
"Total": {"$sum": "$Items.Total"}
}}
])
答案 0 :(得分:0)
在小组之外这样做
maxTotal: { $max: "$Total" }
答案 1 :(得分:0)
要使用相应的帐单号获得最高总金额,您需要进一步 $sort
管道,您可以按总金额降序重新排序汇总的文档,然后再进行分组订购的文档一起使用 $first
运算符获取最高金额及其相应的帐单编号。以下内容应该足够了:
db.PurchaseDetails.aggregate([
{ "$unwind": "$Items" },
{
"$group": {
"_id": {
"BillNo":"$BillNo",
"DateP":"$DateP",
"Type":"$Type"
},
"Total": {"$sum": "$Items.Total"}
}
},
{ "$sort": { "Total": -1 } }, // re-order the aggregated documents by the Total field
{
"$group": {
"_id": null, // group all the documents
"MaximumTotal": { "$first": "$Total" }, // get the maximum total
"BillNo": { "$first": "$_id.BillNo" } // get the corresponding Bill No.
}
}
]);