【问题标题】:Doctrine mongo group query学说mongo组查询
【发布时间】:2012-10-29 21:42:18
【问题描述】:

我在使用学说 mongo db 实现 groupBy 时遇到问题。

我遵循了这两个指南:

http://cookbook.mongodb.org/patterns/unique_items_map_reduce/

http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html

没错,我想把这个 groupBy:"select * from fonts where 1 group by family"

这是我的代码不起作用:

$queryBuilder = $this->createQueryBuilder();
$queryBuilder->group(array('family'), array('count' => 0));
$queryBuilder->reduce('function (obj, prev) { prev.count++; }');
$queryBuilder->sort($sort, $order);
return $queryBuilder;

提前致谢。

【问题讨论】:

标签: mongodb doctrine


【解决方案1】:

你可以试试:

$queryBuilder = $this->createQueryBuilder();
$queryBuilder->group(array('family' => 1), array('count' => 0));
$queryBuilder->reduce('function (obj, prev) { prev.count += 1;}');
$queryBuilder->sort($sort, $order);
return $queryBuilder;

【讨论】:

    【解决方案2】:

    聚合框架提供了一种处理记录和返回计算结果的简单方法。

    比如我们的文档是这样的。

    class Example
    {
    /**
      * @MongoDB\Field(type="int")
      */
     protected $noExample;
    
     /**
      * @MongoDB\Field(type="string")
      */
     protected $libelle;
    
    
     /**
      * @MongoDB\Field(type="string")
      */
     protected $family;
    
    }
    

    在 ExampleRepository 中,我们需要创建这个函数。

    public function groupByFamily()
    {
    
    $qb = $this->createAggregationBuilder('Document\Example');
    
    
        $qb->group()
           ->field('id')
           ->expression('$family')
           ->field('noExample')
           ->first('$noExample')
           ->field('libelle')
           ->first('$libelle')
           ->field('family')
           ->first('$family')
           ->field('number_record')
           ->sum(1);
    
        $results = $qb->execute();
        return $results;
    }
    

    你可以read more

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      相关资源
      最近更新 更多