Yii2 MongoDB 非重复计数

Yii2 MongoDB distinct count

如何使用查询从集合中获取不同的值? 现在我正在使用这个解决方案:

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

集合示例:

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

结果必须是:

3

您可以为此使用 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 )
    ))
);

尝试这个未测试但你可以得到你的结果,如果出现异常请进行一些更改。

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

More detail