получить сумму в нескольких условиях в mongodb и Stack Overflow

У меня есть следующий код, чтобы получить некоторые из всех цен, которые имеют тип 1 или конкретное значение, но оно не работает.

<?php
$m = new Mongo();
if (!$m)echo "Not Connected to database successfully";
$db =$m->mongo_project;
$collection = $db->prices;
$pipeline=array(
array(
'$match' => array(
'_id' => array(
'$type' =>1
)
)
),
array(
'$group' => array(
'_id' => '',
'count' => array(
'$sum' => '$price'
)
)
),
);
$out = $collection->aggregate($pipeline);
foreach ($out as $key=>$value) {
if($key=='result') {
$r=$value[0]['count'];
}
}
echo $r;?>

0

Решение

Я думаю, что вы имеете в виду документ, который имеет поле «тип» со значением 1. $type Используемый здесь оператор — это специальный оператор MongoDB, используемый для соответствия определенным типам BSON. В этом случае вы просили о соответствии _id поля типа DOUBLE или BSON типа 1.

Исправляя это:

$pipeline=array(
array(
'$match' => array(
'type' => 1
)
),
array(
'$group' => array(
'_id' => '',
'total' => array(
'$sum' => '$price'
)
)
),
);

Или вы можете просто получить «сумму» значений «цены» для каждого значения «типа», передав это как _id в вашем $group операция, а не. Таким образом, вы можете увидеть все с первого взгляда:

$pipeline=array(
array(
'$group' => array(
'_id' => '$type',
'total' => array(
'$sum' => '$price'
)
)
),
);

В этом контексте «$ type» означает значение поля.

0

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

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

По вопросам рекламы [email protected]