php7 mongo查询findOne的问题

时间:2017-06-29 15:54:36

标签: php mongodb ubuntu

我是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);
你能帮帮我吗?谢谢!

3 个答案:

答案 0 :(得分:3)

您对经理api的使用不正确。

ngAfterViewInit

或者,您应该通过composer安装库,它提供与旧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);

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

答案 1 :(得分:0)

对于那些想在新的Mongo Library和PHP7之间使用简单包装的人,我在GitHub上维护一个。

https://github.com/ThomasSquall/PHP7MongoDriver

此外,如果您想为存储库本身做出贡献,欢迎您:)

答案 2 :(得分:0)

只是花了一些时间通过尝试直接print_r结果来认为这是行不通的,如果只是测试代码,则必须将游标转换为这样可见的数组:

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