PyMongo / Mongoengine等价于mongodump
是否有相同功能PyMongo
或mongoengine
到MongoDB的mongodump
?我似乎在文档中找不到任何内容。
用例:我需要定期备份远程mongo数据库。本地计算机是未安装mongo的生产服务器,并且我没有管理员权限,因此无法使用subprocess
call
mongodump
。我可以在virtualenv上本地安装mongo客户端,但是我更喜欢API调用。
非常感谢 :-)。
-
对于相对较小的小型数据库,我最终使用了以下解决方案。它并不真正适用于大型数据库或复杂数据库,但足以满足我的情况。它将所有文档作为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))