import bson from pymongo import MongoClient def dump(collections, conn, db_name, path): """ MongoDB Dump :param collections: Database collections name :param conn: MongoDB client connection :param db_name: Database name :param path: :return: >>> DB_BACKUP_DIR = '/path/backups/' >>> conn = MongoClient("mongodb://admin:admin@127.0.0.1:27017", authSource="admin") >>> db_name = 'my_db' >>> collections = ['collection_name', 'collection_name1', 'collection_name2'] >>> dump(collections, conn, db_name, DB_BACKUP_DIR) """ db = conn[db_name] for coll in collections: with open(os.path.join(path, f'{coll}.bson'), 'wb+') as f: for doc in db[coll].find(): f.write(bson.BSON.encode(doc)) def restore(path, conn, db_name): """ MongoDB Restore :param path: Database dumped path :param conn: MongoDB client connection :param db_name: Database name :return: >>> DB_BACKUP_DIR = '/path/backups/' >>> conn = MongoClient("mongodb://admin:admin@127.0.0.1:27017", authSource="admin") >>> db_name = 'my_db' >>> restore(DB_BACKUP_DIR, conn, db_name) """ db = conn[db_name] for coll in os.listdir(path): if coll.endswith('.bson'): with open(os.path.join(path, coll), 'rb+') as f: db[coll.split('.')[0]].insert_many(bson.decode_all(f.read()))