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

Posted

技术标签:

【中文标题】如何使用 pymongo 重命名 mongodb 数据库?【英文标题】:How to rename a mongodb database using pymongo? 【发布时间】:2013-09-05 21:50:46 【问题描述】:

我需要重命名使用pymongo 创建的数据库。我想用pymongo 来做。我发现this other *** question 非常相似,并且代码 sn-ps 看起来像 pythonesque,除了 use 关键字使它...我不知道是什么(更新:可能是 Perl?)。

我做了一个

client.copy_database('old_name', 'new_name)

然后发现我在“client.database_names()”中有new_name。但是里面好像没有收藏?我还需要做什么,使用 pymongo 命令深度复制数据库?

【问题讨论】:

copy_database 是正确的方法。您确定该命令成功并且您复制了正确的数据库吗? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:
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')

【讨论】:

我试过这个。它甚至回答了 True。但是当我做for e in client.old_name.twigs.find(): print(e) 时,我看到了很多东西。但是当我做for e in client.new_name.twigs.find(): print(e) 时,它什么也没打印。这让我觉得它不是真正的深拷贝? 我无法拼写自己的数据库名称。叹。当。对不起。 (解释一下,它确实起作用了)

以上是关于如何使用 pymongo 重命名 mongodb 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以重命名 PyMongo 中 Mongo 查询输出中的字段?

如何重命名 MongoDB 数据库? (当前状态)

如何重命名MongoDB中的replica set

如何使用 python mongodb 客户端库(pymongo)更新 mongodb 集合中所有文档的字段“类型”

如何使用 html、pymongo 中的按钮更新 mongodb

如何使用 flask_pymongo 将数据从 mongodb 显示到烧瓶模板?