Как исправить, Превышен лимит памяти для $group, но не разрешена внешняя сортировка. Передайте allowDiskUse:true

Я использую AWS-DocumentDB с laravel и пытаюсь создать агрегаторы для группировки и суммирования пользователей по дате, национальности, полу и возрасту, поэтому я сделал следующее:

$aggregator = [
    [ '$project' => ['gender' => true] ],
    [ '$group' => [ '_id' => '$gender', 'type' => ['$first' => '$gender'], 'total' => ['$sum' => 1] ] ]
];

User::raw(function($collection) use ($aggregator) {
    return $collection->aggregate($aggregator, [ 'allowDiskUse' => true ]);
});

$aggregator = [
    [ '$project' => ['created_at' => true] ],
    [ 
        '$group' => [
            '_id'   => [ 'year' => ['$year' => '$created_at'], 'month' => ['$month' => '$created_at'] ],
            'total' => [ '$sum' => 1 ],
            'year'  => [ '$first' => ['$year' => '$created_at'] ],
        ],
    ],
    // ['$sort' => [ '_id.month' => 1 ]],
    [
        '$group' => [
            '_id'    => '$_id.year',
            'year'   => [ '$first' => '$year' ],
            'months' => [
                '$push' => [
                    'month' => '$_id.month',
                    'name'  => '$_id.month',
                    'total' => '$total'
                ]
            ]
        ]
    ],
];

return User::raw(function($collection) use ($aggregator) {
    return $collection->aggregate($aggregator, [ 'allowDiskUse' => true ]);
});

$aggregator = [
    [ '$project' => ['location' => true] ],
    [ '$group' => [ '_id' => '$location', 'name' => ['$first' => '$location'], 'code' => ['$first' => '$location'], 'total' => ['$sum' => 1] ] ]
];

return User::raw(function($collection) use ($aggregator) {
    return $collection->aggregate($aggregator, [ 'allowDiskUse' => true ]);
});

несмотря на то, что я передаю allowDiskUse, он все равно выдает мне эту ошибку Превышен лимит памяти для $group, но не разрешена внешняя сортировка. Передайте allowDiskUse:true

Итак, как решить эту проблему? и есть ли способ объединить эти запросы в один запрос?

0 ответов

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