簡體   English   中英

如何使用 pymongo 重命名 mongodb 數據庫?

[英]How to rename a mongodb database using pymongo?

我需要重命名我使用pymongo創建的數據庫。 我想用pymongo來做。 我發現另一個非常相似的 stackoverflow 問題,代碼片段看起來像 pythonesque,除了use關鍵字使得它......我不知道是什么(更新:Perl 可能?)。

我做了一個

client.copy_database('old_name', 'new_name)

然后發現我在 `client.database_names()' 中有new_name 但是里面好像沒有collections? 我還需要做什么,才能使用 pymongo 命令深度復制數據庫?

從PyMongo 3.0開始,由於copy_database 已在3.0中刪除 ,因此您必須使用admin.command

client.admin.command('copydb',
                     fromdb='source_db_name',
                     todb='target_db_name')
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')

我嘗試了以上所有方法,但沒有一個對我有用,下面的腳本對我有用,我認為它也對你有用。(注意: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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM