MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

PyMongo/Mongoengine-Äquivalent zu Mongodump

Für meine relativ kleine kleine Datenbank habe ich schließlich die folgende Lösung verwendet. Es ist nicht wirklich geeignet für große oder komplexe Datenbanken, aber es reicht für meinen Fall aus. Es legt alle Dokumente als json im Backup-Verzeichnis ab. Es ist klobig, aber es verlässt sich nicht auf andere Dinge als 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))