PyMongo / Mongoengine等价于mongodump

发布于 2021-01-29 16:27:06

是否有相同功能PyMongomongoengine到MongoDB的mongodump?我似乎在文档中找不到任何内容。

用例:我需要定期备份远程mongo数据库。本地计算机是未安装mongo的生产服务器,并且我没有管理员权限,因此无法使用subprocesscall
mongodump。我可以在virtualenv上本地安装mongo客户端,但是我更喜欢API调用。

非常感谢 :-)。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于相对较小的小型数据库,我最终使用了以下解决方案。它并不真正适用于大型数据库或复杂数据库,但足以满足我的情况。它将所有文档作为json转储到备份目录。它笨拙,但是除了pymongo之外,它不依赖其他任何东西。

    from os.path import join
    import pymongo
    from bson.json_utils import dumps
    
    def backup_db(backup_db_dir):
        client = pymongo.MongoClient(host=<host>, port=<port>)
        database = client[<db_name>]
        authenticated = database.authenticate(<uname>,<pwd>)
        assert authenticated, "Could not authenticate to database!"
        collections = database.collection_names()
        for i, collection_name in enumerate(collections):
            col = getattr(database,collections[i])
            collection = col.find()
            jsonpath = collection_name + ".json"
            jsonpath = join(backup_db_dir, jsonpath)
            with open(jsonpath, 'wb') as jsonfile:
                jsonfile.write(dumps(collection))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看