gpt4 book ai didi

php - 重命名 mongodb 数据库

转载 作者:可可西里 更新时间:2023-11-01 10:44:28 26 4
gpt4 key购买 nike

我正在使用 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 数据库?

最佳答案

复制数据库(php + mongodb):

<?php

$rename = 'oldname';
$name = 'newname';
$mongo = (new MongoClient());
$db = $mongo->admin;
$response = $db->command(array(
'copydb' => 1,
'fromhost' => 'localhost',
'fromdb' => $rename,
'todb' => $name
));

print_r($response);

删除数据库(php + mongodb):

<?php

$name = 'oldname';
$mongo = (new MongoClient());
$db = $mongo->$name;
$response = $db->command(array(
'dropDatabase' => 1
));

print_r($response);

关于php - 重命名 mongodb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14701418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com