如果我在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)
它给了我正确的结果,我想要的;但这是非常愚蠢的。还有其他更直接的方式吗?
答案 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)