2016-04-01 15 views
-1

mongodbの集約関数によってグループから最大値を見つける方法は?私は最大の合計金額を知りたいと思ったし、そのcorrespondant法案号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パイプラインが必要です合計金額のキーを降順で集計し、次に並べ替えられた伝票をグループ化して、$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. 
     } 
    } 
]); 
関連する問題