我想我们有这个数据
{ "_id" : 1, "item" : "abc", "quantity" : 2, "category" : 1}
{ "_id" : 2, "item" : "jkl", "quantity" : 1, "category" : 1}
{ "_id" : 3, "item" : "xyz", "quantity" : 5, "category" : 2}
{ "_id" : 4, "item" : "abc", "quantity" : 10, "category" : 2}
{ "_id" : 5, "item" : "xyz", "quantity" : 10, "category" : 3}
{ "_id" : 6, "item" : "cds", "quantity" : 9, "category" : 3}
我想查询一个包含最大数量的类别的查询。所以我必须:
1-按类别分组
2-汇总每个类别中项目的数量
3-在这些总和中获得最大值。
因此在Mongodb中,我得到了一点帮助here:
db.items.aggregate([
{ $match: {} },
{ $group: {
_id: '$category',
sumQ: {$sum: '$quantity'}
}
},
{ $sort: {sumQ: -1 } },
{ $limit: 1 }
])
但是当我想用 createAggregationBuilder 我找不到其他方法。
拜托了!!
答案 0 :(得分:0)
对于那些搜索相同问题的人,我找到了解决方案:
$builder = $this->dm->createAggregationBuilder(Production::class);
$builder
->match()
// put what you want here
->group()
->field('id')
->expression('$category')
->field('quantity')
->sum('$quantity')
->sort(['quantity' => -1])
->limit(1)