Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb mongo组查询_Mongodb_Doctrine - Fatal编程技术网

Mongodb mongo组查询

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

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

我遵循了以下两条指南:

确切地说,我想让这个groupBy:“选择*字体,其中1个groupBy family”

这是我不起作用的代码:

$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批处理运行。见: