Как использовать агрегатную функцию в 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);
Другие вопросы по тегам