Как исправить, Превышен лимит памяти для $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
Итак, как решить эту проблему? и есть ли способ объединить эти запросы в один запрос?