problems with 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 MongoDBDriverManager("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 MongoDBDriverManager("mongodb://localhost:27017");
$filter= array('email' => $email);
$options = array(
'limit' => 1
);
$query = new MongoDBDriverQuery($filter, $options);
$rows = $m->executeQuery('clients.suscriptions', $query);

或者,您应该通过作曲家安装库,它提供与旧 API 类似的语法。

require 'vendor/autoload.php';
$m= new MongoDBClient("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

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

只是花了一些时间认为这不起作用,因为它试图直接print_r结果,如果只是测试代码,那么光标必须转换为数组才能可见,如下所示:

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

相关内容

  • 没有找到相关文章

最新更新