mongodb不支持rename database,只支持renameCollection。
实现rename database方法:
方法1:
测试时别把database删了!!
print('method1:copydb + drop_database')
start_time = time.time()
self.client.admin.command('copydb', fromdb=‘test’, todb=('test_1'))
# self.client.drop_database('test')
print(time.time() - start_time)
方法2:
需要注意方法2操作会自动实现drop_database功能!!
实现过程大概是将 源数据库的collection搬到目标数据库的collection,mongodb的database下collection如果为空,database会自动消失。
print('method2:renameCollection')
start_time = time.time()
collection_list = self.db.list_collection_names()
for item in collection_list:
query = {
'renameCollection': 'test.' + item,
'to': 'test_2.' + item
}
self.client.admin.command(query)
print(time.time() - start_time)
测试的database数据量在7GB,方法1耗时270s,方法2耗时220s。
起初测试的database数据量很小,方法1耗时1.7s,方法2耗时0.05s,让人很激动,接着用了比较正式的数据库测试,提升不是太大,有点失望。