1

我正在使用 mongodb 做项目。所以在这里我编写了单独的函数来创建数据库。这是我的代码

            $conn = new \MongoClient('mongodb://example.com:27017', array("connect" => TRUE));
            $exist_dbs = $conn->listDBs();

            foreach ($exist_dbs["databases"] as $databse) {
                if ($databse['name'] == $db_name) {
                    $is_exist = true;
                }
            }

            if (!$is_exist) {
                $db = new \MongoDB($conn, $db_name);
                $status = true;
                $msg = 'database successfully created';

            } else {
                $status = false;
                $msg = 'database already exist';
            }
            $conn->close();

但在创建数据库后它没有显示。但是如果我像这样添加记录,

            $conn = new \MongoClient('mongodb://example.com:27017', array("connect" => TRUE));
            $exist_dbs = $conn->listDBs();

            foreach ($exist_dbs["databases"] as $databse) {
                if ($databse['name'] == $db_name) {
                    $is_exist = true;
                }
            }

            if (!$is_exist) {
                $db = new \MongoDB($conn, $db_name);
                $status = true;
                $msg = 'database successfully created';
                //new code
                $collection = new \MongoCollection($db, 'users');
                $obj = array("name" => "Madawa", "age" => "34");
                $collection->insert($obj);
            } else {
                $status = false;
                $msg = 'database already exist';
            }
            $conn->close();

它显示了数据库。是什么原因请帮助我。

4

1 回答 1

1

当你说

$db = new \MongoDB($conn, $db_name);

您不是在创建数据库,而是在创建可以访问数据库的对象。这并不意味着数据库确实存在或它确实存在,只是您现在拥有一个能够访问它的对象。所以你基本上说过“让我成为一个数据库对象来处理我的调用,我想选择 $db_name”,但这就是发生的一切。除非您将某些内容放入其中或对其执行某些操作,否则该数据库不存在。

于 2013-02-06T17:38:48.193 回答