【问题标题】:Symfony2 app, MongoDB: Count all records matching criteriaSymfony2 应用程序,MongoDB:计算所有匹配条件的记录
【发布时间】:2014-07-25 13:26:01
【问题描述】:

在我的控制器中,我正在获取有限数量的对象(用于分页),如下所示:

    $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() 的结果

【问题讨论】:

    标签: mongodb symfony doctrine-orm mongodb-query


    【解决方案1】:

    这样做:

        $countQuery = $repo
            ->createQueryBuilder('MyDocument')
            ->requireIndexes(false)
            ;
    
        foreach(array_filter($criteria) as $field=>$value){
            $countQuery->field($field)->equals($value);
        }
    
        $count = $countQuery->count()->getQuery()->execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2021-02-06
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多