Yii2。如何在MongoDB / ActiveQuery中使用聚合?

时间:2017-02-07 16:32:25

标签: php mongodb yii2

如何在MongoDB / ActiveQuery中构建聚合?例如,如果使用MySQL / ActiveQuery,我的查询如下所示:

$query = new Query();
$query->select(['name', '(field1 + field2) AS calculated_field']);

如何在MongoDB / ActiveQuery中构建此查询?

(我正在使用ActiveDataProvider的查询。我不仅需要显示字段,还需要按此字段排序)

2 个答案:

答案 0 :(得分:0)

您可以在Yii2(getter和setter)中使用Model的属性,这样您就不必在sql查询中对其进行硬编码。 例如,你有一些模特"人类"有两列:姓名,姓氏。 并通过写作

$human = Human::findOne(0);
echo $human->fullname;

您希望汇总$ human-> name和$ human->姓氏。那么您可以在模型代码中执行以下操作

 * @property string $name (from database)
 * @property string $surname (from database)
 * @property string $fullname
class Human extends \yii\db\ActiveRecord
{
...
public function getFullname() {
        return $this->name.' '.$this->surname;
    }
...
}

这就是全部,当你调用$ human-> fullname时,它将返回getFullname()函数值

答案 1 :(得分:0)

您认为,只需添加:

$collection = Yii::$app->mongodb->getCollection('collection1');
$join = $collection->aggregate([[
                '$lookup' => [
                    'from'         => 'collection2',
                    'localField'   => 'same_field',
                    'foreignField' => 'same_field',
                    'as' => 'collection1'
                    ]
                ]]);