【问题标题】:Symfony - Mongodb - sum and group bySymfony - Mongodb - 求和和分组
【发布时间】:2018-08-06 19:03:07
【问题描述】:

我想我们有这些数据

{ "_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
转换它时 我找不到怎么做。

【问题讨论】:

    标签: mongodb symfony doctrine


    【解决方案1】:

    对于那些搜索相同问题的人,我找到了解决方案:

    $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)
    

    【讨论】:

    • 它返回什么?
    猜你喜欢
    • 2022-06-15
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多