我正在尝试获得子值的最高值。如果我有两个这样的文件
{
"_id" : ObjectId("5585b8359557d21f44e1d857"),
"test" : {
"number" : 1,
"number2" : 1
}
}
{
"_id" : ObjectId("5585b8569557d21f44e1d858"),
"test" : {
"number" : 2,
"number2" : 1
}
}
我如何获得关键“数字”的最高值?
答案 0 :(得分:2)
使用点表示法:
db.testSOF.find().sort({'test.number': -1}).limit(1)
答案 1 :(得分:1)
max()
无法按照您在SQL中为Mongo所期望的方式工作。 这可能会在未来版本中发生变化,但截至目前, max,min主要用于内部索引键 分片。请参阅http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
不幸的是,现在获得最大值的唯一方法是排序 收集关于该值的desc并采取第一个。
db.collection.find("_id" => x).sort({"test.number" => -1}).limit(1).first()
答案 2 :(得分:1)
获取密钥的最高值" number"你可以在这里使用两种方法。您可以使用 aggregation framework ,其中管道看起来像这样
db.collection.aggregate([
{
"$group": {
"_id": 0,
"max_number": {
"$max": "$test.number"
}
}
}
])
<强>结果强>:
/* 0 */
{
"result" : [
{
"_id" : 0,
"max_number" : 2
}
],
"ok" : 1
}
或者您可以使用 find()
光标,如下所示
db.collection.find().sort({"test.number": -1}).limit(1)