Я использую расширение mongodb для yii2. Я хочу получить сумму поля total
из коллекции mongodb.
$query = new Query;
$rows = $query->select(['total'])->from('invoices')->where(['status' => 'Unpaid'])->sum('total');
Но я каждый раз получаю ноль, даже если он больше нуля. Есть ли проблема с моим запросом?
Вы всегда должны иметь доступ к коллекционный объект и выполнить операция агрегации на этом. Все это в основном соответствует стандарту структура агрегации синтаксис:
$collection = Yii::$app->mongodb->getCollection('invoices');
$result = $collection->aggregate(
array( '$match' => array( 'status' => 'Unpaid' ) ),
array( '$group' => array(
'_id' => NULL,
'total' => array( '$sum' => '$total' )
))
);
Большинство инфраструктур более высокого уровня имеют способ доступа к объектам родного драйвера, где операции в основном одинаковы, и более эффективны, чем предлагаемые абстракции, особенно при любых попытках соединить миры SQL и NoSQL.
В целом мост является хорошей вещью, но он никогда не бывает оптимальным, поскольку обе технологии работают совершенно по-разному.
Других решений пока нет …