【发布时间】:2019-02-16 22:30:30
【问题描述】:
我正在尝试在 Ubuntu 16.04 上将 MongoDB 与 php5.6 一起使用。我有一个创建集合的 php 脚本。当我在我的 Apache Web 服务器上打开脚本时,它显示“连接成功,已创建集合”但是当我登录 mongo 终端并切换到数据库(ecoss)时,我找不到该集合。
要建立连接:我通过运行 sudo apt-get update 和 sudo apt-get install php5.6-mongo 安装了 mongoDB 扩展
之后我编辑了我的 php.ini 文件并添加了扩展名extension=mongo.so;
php-mongo的安装:
我的 php.ini 文件的摘录:
这是我的 php 脚本create.php
<?php
// connect to mongodb
$m = new MongoClient();
$db = $m->ecoss;
echo "Connection successful, Database ecoss selected" . "<br>";
$collection = $db->createCollection("mycol");
echo "Collection created succsessfully";
?>
执行上述脚本后,在我的浏览器上输出:
连接到ecoss数据库并运行命令show collections后在mongo终端上输出:
【问题讨论】:
-
Mongo 在必要时不会创建集合。您没有将任何特殊选项传递给
createCollection,因此 Mongo 不需要创建集合。它将在您第一次尝试插入数据时隐式创建。我不确定这是否是 Mongo 不创建集合的原因,但这似乎是合理的。 -
我试图在 mongo 终端上创建一个集合,而不传递任何选项或插入数据。运行 show collections 后,我可以看到我新创建的集合。这就是为什么我不明白为什么它不能在 php 上运行。
-
你可以在执行 createCollection 后转储
$collection并查看它返回的内容吗? -
@eselskas 嘿,它正在返回 ecoss.mycol 。这可能意味着什么!