Как использовать агрегатную функцию в Mongodb?
Я обновил php5 до php7. Если я использую mongoClient для подключения к mongodb, он показывает ошибку. Поэтому я использовал следующую команду.
$manager = new MongoDB\Driver\Manager("mongodb://".MONGOHOST.":27017");
Используя вышеупомянутую команду, я могу подключиться к db. Теперь проблема в php5, я использовал агрегатную функцию. Она не поддерживается в php7. Код, используемый в php5, указан ниже.
для подключения БД
$m = new MongoClient('mongodb://'.MONGOHOST.'', array('username' => MONGOUSER, 'password' => MONGOPASS, 'db'=> MONGODB ));
$db = $m->selectDB(MONGODB);
чтобы получить значение из БД:
$ops = array(
array(
'$match'=>array(
"datetime"=>array('$gte'=>$start,'$lte'=>$end)
)
),
array(
'$group' => array(
"_id" => array("slotid" => '$slotid',"bidder" => '$bidder',"viewerid" => '$viewerid',"mediatype"=>'$mediatype'),"total" => array('$sum' => 1),"sitename" =>array('$addToSet' => '$sitename'),"aid" =>array('$addToSet' => '$accountid'),
),
),
);
$ reqbids = $ db-> requestbids-> aggregate ($ ops);
Как это сделать, используя драйвер Монго.. Я искал 2 дня, но не нашел решения.
1 ответ
Вы не можете использовать mongoClient.
Вы должны использовать Mongodb Manager
http://php.net/manual/en/class.mongodb-driver-manager.php
а для агрегатной функции используйте следующий код. Ссылка на сайт$conn = new MongoDB\Driver\Manager("mongodb://127.0.0.1");
$command = new MongoDB\Driver\Command([
'aggregate' => 'collection',
'pipeline' => [
['$group' => ['_id' => '$y', 'sum' => ['$sum' => '$x']]],
],
'cursor' => new stdClass,
]);
$cursor = $manager->executeCommand('db', $command);