使用MongoDB执行有关数据库访问的PHP代码不会产生预期的结果

使用MongoDB执行有关数据库访问的PHP代码不会产生预期的结果,php,mongodb,Php,Mongodb,我在Windows7机器上使用64位WAMP服务器和64位MongoDB。我已经在WAMP服务器上成功配置了MongoDB,其中php_info()页面显示启用了MongoDB支持版本1.3.2RC1。但问题是,每当我在PHP代码中与MongoDB建立连接时,代码都会运行,但不会反映MongoDB控制台中的更改。为什么会这样 <?php $connection = new MongoClient(); //$db = $connection->sample; // sele

我在Windows7机器上使用64位WAMP服务器和64位MongoDB。我已经在WAMP服务器上成功配置了MongoDB,其中
php_info()
页面显示启用了MongoDB支持版本1.3.2RC1。但问题是,每当我在PHP代码中与MongoDB建立连接时,代码都会运行,但不会反映MongoDB控制台中的更改。为什么会这样

 <?php
 $connection = new MongoClient();
 //$db = $connection->sample;

 // select a collection:
 //$collection = $db->first;
 $collection = $connection->sample->test1;

 $doc = array(
 "name" => "MDB",
 "type" => "database",
 "count" => 2,
 "info" => (object)array( "x" => 203, "y" => 102),
 "versions" => array("0.9.7", "0.9.8", "0.9.9")
 );

 $collection->insert( $doc );

 echo "Inserted successfully....";

 $document = $collection->findOne();
 var_dump( $document );

 ?>

上面的代码检索浏览器上插入的文档。但在mongo.exe控制台中没有插入数据。我的默认数据库是“db”

我的默认数据库是“db”

我认为您可能混淆了
db
shell变量和当前数据库,当前数据库默认为“test”,除非您将其指定为
mongo
命令的数据库名称参数。考虑以下事项:

$ mongo
MongoDB shell version: 2.5.5
connecting to: test
> db
test
> ^C
bye

$ mongo foo
MongoDB shell version: 2.5.5
connecting to: foo
> db
foo
>
客户机告诉我,默认情况下,它已连接到“test”数据库,对
db
变量进行评估时,会将其名称报告为字符串。如果我再次连接并指定“foo”作为命令行参数,我会看到“foo”作为默认数据库。此外,我可以在shell中运行
use
在数据库之间切换


在上面的PHP脚本中,当您评估
$connection->sample->test1

时,您正在访问“sample”数据库和“test1”集合。看起来您的示例代码正在插入
sample
数据库,而不是您建议的
db
。我会在
mongo
shell中运行
showdbs
,查看创建了哪些数据库。我还建议您从1.3.2RC1 PHP驱动程序(旧版本候选)升级到最新发布的驱动程序(当前为1.4.5)。在将数据库更改为“db”并更新驱动程序后,我仍然面临相同的问题。您确定您的数据库是db,而不仅仅是读取db.collecton.find()吗作为数据库的db表示法?是的……你是对的。我将db.collection.find()表示法解读为db。我是否出错了?这两个数据库的区别是什么?