gpt4 book ai didi

php - 如何在mongodb querybuilder中 "group by"字段 "count"?

转载 作者:可可西里 更新时间:2023-11-01 10:02:45 27 4
gpt4 key购买 nike

我想用他们拥有的产品对城市进行分类。

我有两个文档:Product 和 city。该产品具有其 ID 和对城市文档的引用:

Product(id)             City 

P1 ------------ Atlanta

P2 ------------ New York

P3 ------------ Michigan

P4 ------------ Atlanta

....

我想要作为查询的结果

[Atlant => 23, New York => 35, Michigan => 23, etc..]

但我无法得到结果。

我的实际代码是

   public function countBestUsers()
{
return $this->createQueryBuilder()
->select('id', 'city')
->distinct('city')
->getQuery()
->execute()
;
}

最佳答案

你可以尝试使用 group 和 reduce,这个例子对我有用:

$count = $dm->createQueryBuilder()->hydrate(false)
->group(array('city.$id' => 1), array('value' => 0))
->reduce('function (curr,result) {
result.value++;
}')
->getQuery()
->execute()->toArray();

如果您需要更多示例:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html#group-queries

如果您按数量排序,我建议使用 aggregate Framework :

$pipeline = array('$group' => array(
'_id' => '$city',
'value' => array('$sum' => 1)
)));

array_push($pipeline, array( '$sort' => array('value' => -1) ) );

$count = $dm->getDocumentCollection('YourBundle:Product')
->aggregate($pipeline)->toArray();

关于php - 如何在mongodb querybuilder中 "group by"字段 "count"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40746355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com