2016-04-01 47 views
-1

如何在mongodb中通过聚合函数从组中找到最大值?我想找出最大的总额和其通讯员号法案如何在mongodb中通过聚合函数从组中找到最大值?

代码剪断的波纹管式给出:

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

回答

0

做这样的组外

maxTotal: { $max: "$Total" }

+0

无法获得正确的结果。你能在这里粘贴整个代码吗? – Pradeep

0

要获得最高的总金额与其相应的帐单号,您需要进一步$sort管道,你在哪里 - 根据汇总文件的总金额降序对订单文件进行排序,然后使用运算符将​​订购文件组合在一起,以获得最高金额及其相应的帐单编号。类似以下内容应该就足够了:

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. 
     } 
    } 
]); 
相关问题