2017-11-12 4 views
0

キー:与えられた最高の値を取得し、私は次のクエリを行ってきた

db.Indiv2.aggregate(
    {$unwind: '$conso'}, 
    {$group: {_id: {conso:'$conso.nom_commercial', region:"$region"}, sum: {$sum: 1}}}, 
    {$sort : {sum : -1}} 
); 

次返します

{ 
     "_id" : { 
      "conso" : "x", 
      "region" : 1 
     }, 
     "sum" : 73226.0 
    }, 
    { 
     "_id" : { 
      "conso" : "x", 
      "region" : 8 
     }, 
     "sum" : 25683.0 
    }, 
    { 
     "_id" : { 
      "conso" : "grandlait demi �cr�m� uht", 
      "region" : 1 
     }, 
     "sum" : 251.0 
    } 

は21の異なる地域があり、私はほとんどの消費アイテムを取得しようとしていますが地域によってどのようにして "sum"を使って各地域の最高値を返すことができますか?

答えて

1

あなたが集約パイプラインの最後に次の二つの段階を追加することは十分なはずです:

$group: { 
    _id: "$_id.region", 
    "conso": { 
     $first: "$_id.conso" 
    }, 
    "sum": { 
     $first: "$sum" 
    } 
} 
関連する問題