проблемы с php7 mongo query findOne

У меня есть Ubuntu 16.04, php7 и mongo.

После обновления системы мой код не работает … У меня есть новая версия php.

Перед обновлением мой код:

// connect $m = new MongoClient(); // select a database $db = $m->clients; // select a collection (analogous to a relational database's table) $collection = $db->suscriptions; // Check if exists in DB $query = array('email' => $email); $cursor = $collection->findOne($query); 

После обновления я изменил соединение, как указано в документации php, но я не могу выполнить какой-либо запрос … Это мой код, если я удалю последнюю строку, код работает:

  // connect $m = new MongoDB\Driver\Manager("mongodb://localhost:27017"); // select a database $db = $m->clients; // select a collection (analogous to a relational database's table) $collection = $db->suscriptions; // Check if exists in DB $query = array('email' => $email); // Problem $cursor = $collection->findOne($query); 

Вы можете мне помочь? Спасибо!

Неправильное использование менеджера api.

 $m = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $filter= array('email' => $email); $options = array( 'limit' => 1 ); $query = new MongoDB\Driver\Query($filter, $options); $rows = $m->executeQuery('clients.suscriptions', $query); 

Кроме того, вы должны установить библиотеку через композитор, который обеспечивает аналогичный синтаксис, как старый api.

 require 'vendor/autoload.php'; $m= new MongoDB\Client("mongodb://127.0.0.1/"); $db = $m->clients; $collection = $db->suscriptions; $query = array('email' => $email); $document = $collection->findOne($query); 

https://docs.mongodb.com/php-library/master/tutorial/crud/#find-one-document

Для тех, кто хочет использовать простую оболочку между новой библиотекой Mongo и PHP7, я поддерживаю ее на своем GitHub.

https://github.com/ThomasSquall/PHP7MongoDriver

Также, если вы хотите внести свой вклад в repository, то вам будет приятно 🙂

Просто потратил некоторое время на то, чтобы подумать, что это не работает, когда это было, пытаясь print_r результат напрямую, если просто проверить код, тогда курсор должен быть преобразован в массив, чтобы быть видимым так:

 $result = $this->OMongo->executeQuery("db.collection", $query); print_r(iterator_to_array($result), false);