MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

PyMongo/Mongoengine équivalent de mongodump

Pour ma base de données relativement petite, j'ai finalement utilisé la solution suivante. Ce n'est pas vraiment adapté aux bases de données volumineuses ou complexes, mais cela suffit pour mon cas. Il vide tous les documents au format JSON dans le répertoire de sauvegarde. C'est maladroit, mais il ne repose pas sur d'autres choses que 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))