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