如何使用pymongo重命名mongodb数据库?

aij0ehis  于 2023-01-12  发布在  Go
关注(0)|答案(3)|浏览(137)

我需要重命名一个使用pymongo创建的数据库。我想使用pymongo来完成此操作。我发现this other stackoverflow question非常相似,代码片段看起来很像Python,除了use关键字,它使它...我不知道是什么(更新:可能是Perl?)。
我做了

client.copy_database('old_name', 'new_name)

然后发现我在'client.database_names()'中有new_name。但是它看起来没有集合在里面。我还需要做什么,使用pymongo命令深度复制数据库吗?

xuo3flqw

xuo3flqw1#

从PyMongo 3.0开始,您必须使用admin.command,因为copy_databasewas removed in 3.0

client.admin.command('copydb',
                     fromdb='source_db_name',
                     todb='target_db_name')
1wnzp6jl

1wnzp6jl2#

import pymongo
client = pymongo.MongoClient()

client.copy_database('foo', 'bar')

assert set(client['foo'].collection_names()) == set(client['bar'].collection_names())

for collection in client['foo'].collection_names():
    assert client['foo'][collection].count() == client['bar'][collection].count()

client.drop_database('foo')
waxmsbnn

waxmsbnn3#

我尝试了所有上述方法,但没有为我工作,下面的脚本已经为我工作,并认为它会为你工作以及.(注:con是我的数据库连接)

def rename_database(old_name,new_name):
        #copying collections and documents from old to new database
        for i in con[old_name].list_collection_names():
            con[new_name][i]
            for j in con[old_name][i].find():
                a=con[new_name][i].insert_one(j)
        #dropping old database
        con.drop_database(old_name)

#testing purpose
rename_database("test","newDbName")

相关问题