gpt4 book ai didi

mongodb - 使用 MongoDB 返回每组中具有最大值的文档

转载 作者:行者123 更新时间:2023-12-04 12:45:56 25 4
gpt4 key购买 nike

给定一个数据集:

{_id: 0, type: 'banana', amount: 5}
{_id: 1, type: 'banana', amount: 3}
{_id: 2, type: 'apple', amount: 8}
{_id: 3, type: 'apple', amount: 2}

仅获取具有最高数量的相同类型记录的最有效方法是什么?

预期的结果是:

{_id: 0, type: 'banana', amount: 5}
{_id: 2, type: 'apple', amount: 8}

现在我正在这样做,但它看起来有点傻:

collection.aggregate([
{ $sort: { 'amount': -1 } },
{ $group: {
_id: '$type',
group: {
$push: '$$ROOT'
}
}, {
$replaceRoot: {
newRoot: { $arrayElemAt: ["$group", 0] }
}
}
])

最佳答案

您可以将以下聚合与 $sort 结合使用数量递减后跟 $first运算符(operator)转换最大数量的文件。

$replaceRoot将最大数量的文档提升到顶层。

collection.aggregate([
{$sort:{'amount':-1}},
{$group:{ _id: '$type',group:{$first:'$$ROOT'}}},
{$replaceRoot:{newRoot:"$group"}}
])

关于mongodb - 使用 MongoDB 返回每组中具有最大值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48420948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com