Выполнение count () для запроса odm (курсор) не возвращает «0», если данные пусты в Symfony-MongoDB-ODM - PullRequest
0 голосов
/ 21 мая 2019

Выполнение count() в запросе odm (курсор) не возвращает «0», если в Symfony-MongoDB-ODM * 1002 данные пустые

$query = $this->dm->createQueryBuilder('AppBundle:DocumentName');
$count = $query->getQuery()->count();

Переменная $count всегда возвращает значение больше нуля («0»). Даже если в документе нет данных

Примечание. Преобразование курсора в массивы занимает больше памяти, извините, пожалуйста, этот метод.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

вы можете использовать AggregationBuilder.Попробуйте этот код в вашем documentNameRepository:

$qb = $this->createAggregationBuilder('Document\DocumentName');
$qb->count('nb_documents');
$results = $qb->execute();
return $results;

Вы можете выполнить операцию перед счетом, как показано ниже:

$qb->match()
   ->field('field_name')
   ->equals(10);

Вы можете выполнить лимит и пропустить операцию перед счетом, как показано ниже:

$qb->skip(10)
   ->limit(100);

Вы можете прочитать документацию .

0 голосов
/ 21 мая 2019

Вы должны сделать:

$count = $query->getQuery()->getSingleScalarResult();

С уважением

...