1

与えられたサンプルドキュメント

{
  "user_id": "user 1",
  "log":[
     {
        "index" : 1,
        "position" : 50
     },
     {
        "index" : 2,
        "position" : 70
     },
     {
        "index" : 3,
        "position" : 60
     }
   ]
},
{
  "user_id": "user 2",
  "log":[
     {
        "index" : 1,
        "position" : 150
     },
     {
        "index" : 2,
        "position" : 570
     },
     {
        "index" : 3,
        "position" : 60
     }
   ]
},

最高の位置にあるuser_idと、mongo独自のシェルのそれぞれのインデックスを返すにはどうすればよいですか?この場合、結果は次のようになります。

  1. user_id = "user 2"
  2. 位置=570
  3. インデックス=2

ありがとう!

4

1 に答える 1

3

aggregateコマンドを使用して各ドキュメント$unwindlog配列を取得し、次$sortの方法で結果のドキュメントを取得しpositionます。

db.test.aggregate({$unwind: '$log'}, {$sort: {'log.position': -1}}, {$limit: 1})
于 2012-12-04T15:14:31.730 に答える