-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 回答
1

相反,您可以按 desc 排序并获取第一个结果。如果 max 不能按预期工作,我认为这是一种替代方法。我很久没有练习了,但可能有类似的东西:

db.collection.sort({'object.number: -1}).limit(1).first()
于 2013-11-13T21:20:12.107 回答
0

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

于 2013-11-19T10:35:13.880 回答