2016-05-12 102 views
1

如何使用查询从集合中计数不同的值? 现在我使用此解决方案:Yii2 MongoDB截然不同的计数

$collection = Yii::$app->mongodb->getCollection('collection_name'); 
$result = $collection->distinct('field_id'); 
return count($result); 

收集例如:

{ 
     {a: 2}, 
     {a: 2}, 
     {b: 3}, 
     {c: 4}  
    } 

结果必然是:

3 
+0

$查询=新的查询; $ count = $ query-> from('collection_name') - > distinct('field_id') - > count(); –

回答

2

您可以使用此aggregation框架:

$collection = Yii::$app->mongodb->getCollection('collection_name'); 
$result = $collection->aggregate(
    array('$group' => array(
     '_id' => '$field_id' 
    )), 
    array('$group' => array(
     '_id' => 1, 
     'count' => array('$sum' => 1) 
    )) 
); 
1

试试这个没有测试过,但你可以得到你的结果,如果发生异常,做一些改变。

use yii\mongodb\Query; 
$query = new Query; 
$count = $query->from('collection_name')->distinct('field_id')->count(); 

More detail