Symfony-Mongodb-求和和分组

时间:2018-08-06 19:03:07

标签: mongodb symfony doctrine

我想我们有这个数据

{ "_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 我找不到其他方法。

拜托了!!

1 个答案:

答案 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)