相关疑难解决方法(0)

如何在MongoDB中对每个组内max对应的文档进行分组和选择?

这是我的 mongo 收藏“销售”:

{"title":"Foo", "hash": 17, "num_sold": 49, 
"place": "ABC"}

{"title":"Bar", "hash": 18, "num_sold": 55, 
"place": "CDF"}

{"title":"Baz", "hash": 17, "num_sold": 55,
"place": "JKN"}

{"title":"Spam", "hash": 17, "num_sold": 20,
"place": "ZSD"}

{"title":"Eggs", "hash": 18, "num_sold": 20, 
"place": "ZDF"}
Run Code Online (Sandbox Code Playgroud)

我想按哈希分组并返回具有最大“num_sold”的文档。所以作为输出我想看到:

{"title":"Baz", "hash": 17, "num_sold": 55,
    "place": "JKN"}

 {"title":"Bar", "hash": 18, "num_sold": 55, 
    "place": "CDF"}
Run Code Online (Sandbox Code Playgroud)

我知道聚合运算符的基础知识,这是我如何分组并获取 num_sold 最大值的方法,但我需要与最大值相对应的整个文档,而不仅仅是值。

db.getCollection('sales').aggregate([
{$group: {_id: "$hash", max_sold : {$max: '$value'}}}
])
Run Code Online (Sandbox Code Playgroud)

在 SQL 中我会用 join 来完成,但在 mongo 中。我还读到,在 mongo 中,组和排序不能很好地协同工作。

sorting max mongodb aggregation-framework

5
推荐指数
1
解决办法
3531
查看次数

标签 统计

aggregation-framework ×1

max ×1

mongodb ×1

sorting ×1