Symfony - Mongodb - сумма и группа по

Я полагаю, у нас есть эти данные

{ "_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 я получил небольшую помощь здесь:

db.items.aggregate([
  { $match: {} },
  { $group: {
         _id: '$category',
         sumQ: {$sum: '$quantity'}
      } 
  },
  { $sort: {sumQ: -1 } },
  { $limit: 1 }
])

Но когда я хочу преобразовать это с помощью
createAggregationBuilder
Я не мог найти, как это сделать.

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
0
481
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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)

что он возвращает?

Tebe 17.07.2019 18:03

Другие вопросы по теме