MongoDb Max Query

时间:2013-11-13 21:14:37

标签: mongodb

如果我在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)

它给了我正确的结果,我想要的;但这是非常愚蠢的。还有其他更直接的方式吗?

3 个答案:

答案 0 :(得分:2)

这应该做的工作:

db.collection.find().limit(1).sort( { number: -1 } )

答案 1 :(得分:1)

相反,您可以按desc排序并获取第一个结果。如果max不能按预期工作,我认为这是另一种选择。 很长一段时间以来我没有采取过这样的方式,但也许是这样:

db.collection.sort({'object.number: -1}).limit(1).first()

答案 2 :(得分:0)

我相信kij指出了正确的答案。只需在“数字”字段中添加索引,即可优化查询 无论如何编写查询(页面底部的结束段落),MongoDB查找查询中的排序,限制和查找顺序始终相同: http://docs.mongodb.org/manual/reference/method/db.collection.find/
我认为MongoDB中的聚合可以更好地控制订单,排序和限制 彼得