我需要在分组后的第二阶段获得字段中具有最大值的文档(或多个文档)。如果我只需要一个,我可以使用'limit(1)',但可能会有许多文档并列在第一位。
我需要这样的东西:
db.sales.aggregate(
[
// First Stage
{
$group :
{
_id : "$item",
totalSaleAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }
}
},
// Second Stage
{
$match: { "totalSaleAmount": { $max: $totalSaleAmount } }
}
]
)
这不起作用,因为$match不允许使用$max,除非它包含在表达式中。我不知道如何完成这个。
你能帮帮我吗?
1条答案
按热度按时间x0fgdtte1#
质询
$setWindowFields
totalSaleAmount
的降序排序$denseRank
添加一个额外的字段以保留订单号,如果字段值相同,则dense-rank将给予相同的排名($rank
不执行此操作)Playmongo