Symfony4 с агрегацией доктрины-odm не работает

Я преобразовал запрос оболочки mongo в запросы ODM доктрины symfony4. Для этого я использую createAggregationBuilder. Он ничего не вернет и выбросит исключение из памяти.

Примечание : Даже я увеличил лимит php, столкнувшись с той же проблемой.

Пожалуйста, найдите следующие коды:

Запросы Shell Mongo:

db.Article.aggregate([
    {
        $group: {
            _id: { department: "$department" },
            count: { $sum: 1 }
        }
    },
    { 
        $sort: { 
            salary: -1 
        } 
    }
]);

Вывод оболочки Mongo:

{ "_id" : { "department" : "IAS" }, "count" : 1 }
{ "_id" : { "department" : "DOCTOR" }, "count" : 1 }
{ "_id" : { "department" : "IT" }, "count" : 1 }
{ "_id" : { "department" : "sales" }, "count" : 4 }

Так же, как создали в symfony4. но я столкнулся с проблемой.

$builder = $this->createAggregationBuilder(Article::class);
$builder
    ->group()
        ->field('id')            
        ->expression('$department')
        ->field('department')
        ->sum('$department')
    ->sort(['salary' => -1])
    ->limit(1);
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
342
1

Ответы 1

    $qb->group()
        ->field('id')->expression(
            $qb->expr()->field('department')->expression('$department')
        )
        ->sum('$department');

В следующий раз используйте $qb->getPipeline() для отладки вашего запроса, это сэкономит вам много времени.

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