MongoDB 中的聚合查询

3

我正在尝试在一个包含多个不同摩托车品牌和每个品牌型号的MongoDB数据库上执行聚合查询。我的第一次查询,获取所有本田(Honda)摩托车的平均价格已经成功。

db.bikes.aggregate([
    { $match: { Make: 'Honda' } },
    {
        $group: {
            _id: '$Type',
            avgcost: { $avg: '$Price' }
        }
    },
    {
        $group: {
            _id: '$_id.Type',
            maxavg: { $max: '$avgprice' } 
        }
    }
])

为了提供

{ "_id" : "VFR700", "avgprice" : 3765.23 }
{ "_id" : "Fireblade", "avgprice" : 4816.27 }
{ "_id" : "CB1000", "avgprice" : 3993.26 }
{ "_id" : "Goldwing", "avgprice" : 4193.22 }

我现在尝试进行另一个查询,仅获取本田摩托车的最高平均价格(即Fireblade,“avgprice”:4816)。

我正在使用以下查询:

db.bikes.aggregate([
    { $match: { Make: 'Honda' } },
    {
        $group: {
            _id: '$Type',
            avgcost: { $avg: '$Price' }
        }
    },
    {
        $group: {
            _id: '$_id.Type',
            maxavg: { $max: '$avgprice' }
        }
    }
])

然而,我遇到了一些问题。
{ "_id" : null, "maxavg" : 4816.27 }

有什么想法可以让我按照自己的方式列出它,例如在那里加入类型名称?
1个回答

1
只需按 avgprice 排序,并限制为一篇文档。
[
{ $match: { Make: 'Honda' } },
{
    $group: {
        _id: '$Type',
        avgcost: { $avg: '$Price' }
    }
},
{$sort: {avgcost: -1}},
{$limit: 1}

]

太棒了,谢谢你这个方法!我花了好长时间才能让额外的组别起作用!:) - woody147

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接