如何在MongoDB / ActiveQuery中构建聚合?例如,如果使用MySQL / ActiveQuery,我的查询如下所示:
$query = new Query();
$query->select(['name', '(field1 + field2) AS calculated_field']);
如何在MongoDB / ActiveQuery中构建此查询?
(我正在使用ActiveDataProvider的查询。我不仅需要显示字段,还需要按此字段排序)
答案 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'
]
]]);