在我的控制器中,我正在获取有限数量的对象(用于分页),如下所示:
$dm = $this->get('doctrine_mongodb');
$repo = $dm->getRepository('AcmeMyBundle:MyDocument');
$criteria = array(
'field1' => 'value1',
'field1' => 'value1',
);
$logs = $repo->findBy(
$criteria, /* criteria */
array($field => $direction), /* sort */
$limit, /* limit */
(($page-1)*$limit)?:null /* skip */
);
现在,我希望获得符合$criteria
的记录总数。
我试图像这样算:
$count = $repo->createQueryBuilder('MyDocument')
->count()->getQuery()->execute();
但它会计算收集中的所有记录。如何将$criteria
应用于该计数查询?
我需要结果为原生MongoDB
db.MyDocument.find({'field2': "value1", 'field2': "value2"}).count()
答案 0 :(得分:1)
完成它:
$countQuery = $repo
->createQueryBuilder('MyDocument')
->requireIndexes(false)
;
foreach(array_filter($criteria) as $field=>$value){
$countQuery->field($field)->equals($value);
}
$count = $countQuery->count()->getQuery()->execute();