使用MongoDB执行有关数据库访问的PHP代码不会产生预期的结果
我在Windows7机器上使用64位WAMP服务器和64位MongoDB。我已经在WAMP服务器上成功配置了MongoDB,其中使用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
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。我是否出错了?这两个数据库的区别是什么?