как включить allowDiskUse для Mongodb или как использовать построитель агрегации? - PullRequest
0 голосов
/ 05 августа 2020

| Пакетная версия | ^ 5. 3@dev | Symfony версия | 5.0.5 | PHP версия | 7.4.8

при переходе на последнюю страницу с сортировкой столкнулся с ошибкой

это то, что я использовал для paginatin

public function getListQuery()
{
    $builder = $this->createQueryBuilder();
    return $builder->getQuery();
}

    $listQuery = $this->documentManager->getRepository(AwinProduct::class)
        ->getListQuery();

    // Paginate the results of the query
    $appointments = $paginator->paginate(
    // Doctrine Query, not results
        $listQuery,
        // Define the page parameter
        $request->query->getInt('page', 1),
        // Items per page
        5
    );

столкнулся с ошибкой

CommandException
Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.

как включить allowDiskUse: true?

это возможно, если использовать vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Aggregation/Builder.php

, потому что внутренняя функция для выполнения содержит параметры массива public function execute(array $options = [])

это работает так успешно

        $builder = $this->createAggregationBuilder();

        $builder->hydrate(false);
        $builder
            ->sort('search_price', 'DESC')
            ->skip(46189)->limit(5);

        $purchase = $builder->execute(['allowDiskUse' => true]);
        return $purchase;
...