私は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データベースの名前を変更するより良い方法はありますか?