0

mongoDB コレクションに次のドキュメントがあります。

{
  "_id" : ObjectId("51d90c3746503d6ab5933b88"),
  "scorearray" : [
    {
      "score" : 0.0
    }, 
    {
      "score" : 7.0
    }
    ],
    "player" : "Arod"
}

/* 1 */
{
  "_id" : ObjectId("51d90c0d46503d6ab5933b86"),
  "scorearray" : [
  {
      "score" : 2.0
  }, 
  {
      "score" : 1.0
  }, 
  {
      "score" : 5.0
  }],
  "player" : "Martini"
}

各プレーヤーの最大スコアを取得しようとしており、次のようなクエリがありますが、1 人のプレーヤー、つまり 7.0 の Arod のみが返されます。クエリ結果には Arod 7.0 と Martini 5.0 の両方が必要です。

以下のクエリを変更する方法を教えてください。どんなガイダンスでも大歓迎です。

db.playerscorecollection.aggregate([
    {$project:{_id:0,player:1, "scorearray.score":1}},
    {$unwind:"$scorearray"},
    {$sort:{"scorearray.score":-1}},
    {$limit:1}
]); 
4

2 に答える 2

0

2 番目の質問に感謝します。代わりに、次のより簡単な方法を使用して達成しました。

ここで、Java DB ドライバーを使用してデータを取得する Java プログラムに変換するためのガイダンスが必要です。ご指導いただければ幸いです。

db.playerscorecollection.aggregate([ 
{ $unwind: "$scorearray"}, 
{ $group: { _id: {player:'$player,venue:'$venue'}, 
maxScore: { $max: "$scorearray.score" } } } ]); 
于 2013-07-10T05:32:56.320 に答える