我正在使用 mongodb 和 php 做项目。所以在这里我尝试使用 php 重命名现有数据库。所以我做了以下重命名数据库的方法。
- 首先我创建新数据库(用户新数据库名称)
- 从旧数据库读取所有记录并插入到新数据库
- 然后我放弃旧数据库
这是我的代码。
$conn = new \MongoClient('mongodb://example.com:27017', array("connect" => TRUE));
$exist_dbs = $conn->listDBs();
foreach ($exist_dbs["databases"] as $databse) {
if ($databse['name'] == $new_name) {
$new_name_is_exist = true;
}
}
if (!$new_name_is_exist) {
$db = new \MongoDB($conn, $old_name);
//create new database
$db_new = new \MongoDB($conn, $new_name);
$collections = $db->getCollectionNames();
foreach ($collections as $collection) {
//create collection
$new_collection = new \MongoCollection($db_new, $collection);
$mongo_collection = $db->$collection;
$objects = $mongo_collection->find();
while ($document = $objects->getNext()) {
//add records
$new_collection->insert($document);
}
}
$db->drop();
$msg = 'database renamed';
} else {
$msg = 'given database name already exist';
}
$conn->close();
它工作正常。但我想知道有没有更好的方法来使用 php 重命名 mongo 数据库?