У меня есть следующий код, чтобы получить некоторые из всех цен, которые имеют тип 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 типа 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» означает значение поля.
Других решений пока нет …