我正在使用mongodb做项目。所以在这里我写了单独的函数来创建db。这是我的代码
$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();
但是在创建db后它没有显示。但如果我像这样添加记录,
$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();
它显示了数据库。请帮帮我的原因是什么。
答案 0 :(得分:1)
当你说
时$db = new \MongoDB($conn, $db_name);
您没有创建数据库,而是创建可以访问数据库的对象。这并不意味着数据库确实存在或者它确实存在,只是你现在有一个能够访问它的对象。所以你基本上说“让我成为一个数据库对象来处理我的调用,我想选择$ db_name”,但就是这样。在您将数据放入其中或对其执行某些操作之前,数据库不存在。