Search code examples
pythonmongodbpymongo

How to rename a mongodb database using pymongo?


I need to rename a database I created using pymongo. I'd like to use pymongo to do it. I found this other stackoverflow question that is very similar, and the code snippets look pythonesque, except the use keyword which makes it... I don't know what (Update: Perl probably?).

I did a

client.copy_database('old_name', 'new_name)

And found that I then had new_name in `client.database_names()'. But it appears to have no collections in it? What else do I need to do, to deeply copy the database, using pymongo commands?


Solution

  • 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')