sql >> Database >  >> NoSQL >> MongoDB

PyMongo/Mongoengine-equivalent van mongodump

Voor mijn relatief kleine kleine database heb ik uiteindelijk de volgende oplossing gebruikt. Het is niet echt geschikt voor grote of complexe databases, maar voor mijn geval is het voldoende. Het dumpt alle documenten als een json naar de back-upmap. Het is onhandig, maar het is niet afhankelijk van andere dingen dan 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))


  1. Correcte manier om een ​​verzameling te sharden en hoe de resultaten te interpreteren

  2. k8s/python:Hoe lees ik een geheim met behulp van de Kubernetes Python-client?

  3. Wat is de juiste manier om een ​​HAVING te doen in een MongoDB GROUP BY?

  4. Ontwerppatronen voor gegevenstoegangslaag