У меня есть следующий код, чтобы получить некоторые из всех цен, которые имеют тип 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;?>
Я думаю, что вы имеете в виду документ с полем "тип" со значением 1. Оператор $type
используемый здесь, является специальным оператором MongoDB, используемым для соответствия определенным типам BSON. В этом случае вы запрашивали соответствующие поля _id
которые были типа "DOUBLE", или BSON type 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" означает значение поля.