【发布时间】:2022-02-09 23:18:21
【问题描述】:
我想获取特定字段的最高值的“所有文档”,而不是按另一个字段分组。
考虑以下数据:
_id:1, country:india, quantity:12, name:xyz
_id:2, country:USA, quantity:5, name:abc
_id:3, country:USA, quantity:6, name:xyz
_id:4, country:india, quantity:8, name:def
_id:5, country:USA, quantity:10, name:jkl
_id:6, country:india, quantity:12, name:jkl
答案应该是
country:india max-quantity:12
name xyz
name jkl
country:USA max-quantity:10
name jkl
我已经尝试了几个查询,但我只能获得没有名称的最大值,或者我可以分组但它显示了所有值。
db.coll.aggregate([{
$group:{
_id:"$country",
"maxQuantity":{$max:"$quantity"}
}
}])
例如上面将给出每个国家/地区的最大数量,但是如何与其他字段结合以显示所有最大数量的文档。
【问题讨论】:
-
在 $group 中的 _id 字段之后添加您的额外字段
-
@AlokDeshwal 你能给我确切的查询吗
-
@AlokDeshwal 这行不通,因为其目的是为每个国家/地区找到一个“最大值”,然后只从“匹配”该“最大值”值的文档中返回其他值。
标签: mongodb mongodb-query aggregation-framework