2016-05-12 34 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