2017-12-08 10 views
0

プロジェクトのフィールドがグループに存在しないかどうか疑問に思っています。 例えば、私は以下のコレクションを持っていると私はすべての学生間で最高のサッカーを持っている学生の名前はMongo dbプロジェクトにグループに含まれていないフィールド

{ "_id" : 1, "Snmae" : Alex, "score" : 97} 
{ "_id" : 2, "Snmae" : Sara, "socre" : 97 } 
{ "_id" : 3, "Snmae" : Sam, "socre" : 93 } 
{ "_id" : 4, "Snmae" : Dan, "socre" : 77 } 


db.stuudent.aggregate( 
{$project:{_id:0,sname:1,score:1}}, 
{ $group : { _id : "", High_Score: { $max: "$score" }}} 
); 

たい願望出力が

SNAMEです:アレックス、スコア:97

SNAME:サラ、スコア:97

答えて

1

データ:

{ "_id" : 1.0, "Sname" : "Alex", "score" : 97.0 }, 
{ "_id" : 2.0, "Sname" : "Sara", "score" : 97.0 }, 
{ "_id" : 3.0, "Sname" : "Sam", "score" : 93.0 }, 
{ "_id" : 4.0, "Sname" : "Dan", "score" : 77.0 } 

クエリ:

db.collection.aggregate([ 
    { 
     $group: { 
      _id: "$score", 
      "names": { $push: "$Sname" } 
     } 
    }, 
    { $sort: { "_id": -1 } }, 
    { $limit: 1}, 
    { $unwind: "$names" }, 
    { 
     $project: { 
      "Sname": "$names", 
      "score": "$_id", 
      "_id": 0 
     } 
    } 
]) 

説明:

  • $group - スコアによってグループの学生。
  • $sort - 降順でスコアでドキュメントを並べ替えます。
  • $limit - 最初のドキュメント(スコア値が最も高いドキュメント)のみを使用します。
  • $unwind - 分離したドキュメントに「名前」の配列を分割します。
  • $project - 最終結果(定義された形状の文書)を生成します。
関連する問題