сумма поля в mongodb с использованием php yii2 ex

Я использую расширение mongodb для yii2. Я хочу получить сумму поля total из коллекции mongodb.

$query = new Query;
$rows = $query->select(['total'])->from('invoices')->where(['status' => 'Unpaid'])->sum('total');

Но я каждый раз получаю ноль, даже если он больше нуля. Есть ли проблема с моим запросом?

2

Решение

Вы всегда должны иметь доступ к коллекционный объект и выполнить операция агрегации на этом. Все это в основном соответствует стандарту структура агрегации синтаксис:

$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.

В целом мост является хорошей вещью, но он никогда не бывает оптимальным, поскольку обе технологии работают совершенно по-разному.

3

Другие решения

Других решений пока нет …