如果Symfony- MongoDB-ODM中的数据为空,则在odm查询(游标)上执行count()不会返回“ 0”

时间:2019-05-21 13:44:42

标签: php mongodb symfony doctrine-odm

如果Symfony- MongoDB-ODM中的数据为空,则对odm查询(光标)执行count()不会返回“ 0”

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

变量$count始终返回大于零(“ 0”)的值。即使文档中没有数据

注意:将光标转换为数组会占用更多内存,请原谅此方法。

2 个答案:

答案 0 :(得分:0)

您应该这样做:

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

致谢

答案 1 :(得分:0)

您可以使用AggregationBuilder。在您的documentNameRepository中尝试以下代码:

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

您可以在计数之前执行where操作,如下所示:

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

您可以在进行如下计数之前执行限制和跳过操作:

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

您可以阅读the documentation