Mongodb mongo组查询
我在使用mongo db实现groupBy时遇到问题 我遵循了以下两条指南: 确切地说,我想让这个groupBy:“选择*字体,其中1个groupBy family” 这是我不起作用的代码:Mongodb mongo组查询,mongodb,doctrine,Mongodb,Doctrine,我在使用mongo db实现groupBy时遇到问题 我遵循了以下两条指南: 确切地说,我想让这个groupBy:“选择*字体,其中1个groupBy family” 这是我不起作用的代码: $queryBuilder = $this->createQueryBuilder(); $queryBuilder->group(array('family'), array('count' => 0)); $queryBuilder->reduce('function (ob
$queryBuilder = $this->createQueryBuilder();
$queryBuilder->group(array('family'), array('count' => 0));
$queryBuilder->reduce('function (obj, prev) { prev.count++; }');
$queryBuilder->sort($sort, $order);
return $queryBuilder;
提前感谢。您可以尝试:
$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;
聚合框架提供了一种处理记录和返回计算结果的简单方法 例如,我们的文档是这样的
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;
}
可以考虑使用聚合框架进行简单分组,而不是进行M/R批处理运行。见: