Đối với cơ sở dữ liệu nhỏ tương đối nhỏ của tôi, cuối cùng tôi đã sử dụng giải pháp sau. Nó không thực sự phù hợp với cơ sở dữ liệu lớn hoặc phức tạp, nhưng nó đủ cho trường hợp của tôi. Nó kết xuất tất cả các tài liệu dưới dạng json vào thư mục sao lưu. Nó lắt léo, nhưng nó không dựa vào những thứ khác ngoài 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))