-2

MongoDb に次のデータがあるとします。

{ "_id" : ObjectId("1"), "name" : "call", "hour": 10, "number" : 14 }
{ "_id" : ObjectId("2"), "name" : "call", "hour": 11, "number" : 100 }
{ "_id" : ObjectId("3"), "name" : "call", "hour": 12, "number" : 200 }

MongoDb からクエリを実行して、どの時間が最も呼び出し回数が多いかを示したいので、クエリを実行した後の結果は次のようになります (行全体を表示したい):

{ "_id" : ObjectId("3"), "name" : "call", "hour": 12, "number" : 200 }

MongoDb には独自の max() 関数があることがわかりましたが、このようには機能しません。この単純なクエリの実行方法を誰か教えてもらえますか?

kijさんのアイデアありがとうございます。したがって、次のようにクエリすると:

db.xxx.find({name:"call"}).sort({number:-1}).limit(1)

私が望む正しい結果が得られます。しかし、それはかなり愚かです。他にもっと直接的な方法はありますか?

4

3 に答える 3

2

これでうまくいくはずです:

db.collection.find().limit(1).sort( { number: -1 } )
于 2013-11-13T21:23:39.790 に答える
0

kij は正しい答えを指摘したと思います。「数値」フィールドにインデックスを追加するだけで、クエリが最適化されます。
並べ替え、制限、および検索の順序は、クエリがどのように記述されていても、MongoDB の検索クエリでは常に同じです (ページの下部にある最後の段落): http://docs.mongodb.org/manual/reference/method/db.collection .find/
MongoDB の集約により、順序、並べ替え、および制限をより細かく制御できると思います。
ピーター

于 2013-11-19T10:35:13.880 に答える