如何使用 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 查询输出中的字段?
如何使用 python mongodb 客户端库(pymongo)更新 mongodb 集合中所有文档的字段“类型”