如何在mongodb中通过聚合函数从组中找到最大值?

时间:2016-04-01 07:44:08

标签: mongodb

如何通过mongodb中的聚合函数从组中查找最大值?我想找出最大总金额及其对应的比尔号。

代码片段如下:

db.PurchaseDetails.aggregate([
    { "$unwind": "$Items" },
    { "$group": {
       "_id": 
            {
              "BillNo":"$BillNo",
              "DateP":"$DateP", 
              "Type":"$Type"
            },       
            "Total": {"$sum": "$Items.Total"}
    }}
])

2 个答案:

答案 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.
        }
    }
]);