我是php和mongodb的新手。我在Ubuntu 16.04.3 LTS上安装了php7.0和mongo 3.4.10。
我可以输入mongo cli命令显示所需的文件:
db.testcollection.find({_id:'superid'}).pretty()
它给了我这个结果:
{ "_id" : "superid", "record" : "whatever" }
但我尝试使用这个php脚本显示来自mongodb集合的文档:
<?php
$mongo = new \MongoDB\Driver\Manager();
$filter = ['_id' => 'superid'];
$options = [];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db.testcollection', $query);
foreach ($rows as $document) {
print_($document);
var_dump($document);
echo $document;
}
echo "The END"
?>
这只显示“结束”。
我的php脚本中缺少什么来显示与cli命令类似的mongo查询结果?
答案 0 :(得分:0)
问题是: 我在mongo shell中使用这些命令创建了一个名为test的新数据库:
contain: strict
所以db的路径是test.testcollection而不是db.testcollection。
当我更正这样的相应行时:
use test;
db.createCollection("testcollection");
db.testcollection.insert({ "_id" : "superid", "record" : "whatever"});
它按预期工作。
我对mongo shell(cli)感到困惑,它给了我正确的结果而不需要指定数据库名称(即使在注销mongo shell并再次登录之后)。
另一方面,你必须在php中指定dbname.collectionname(有意义):)