問題

PyMongoまたはmongoengineのMongoDBのmongodumpに相当する関数はありますか?私はドキュメントで何かを見つけることができないようです。

ユースケース:リモートmongoデータベースを定期的にバックアップする必要があります。ローカルマシンは、mongoがインストールされていないプロダクションサーバーであり、管理者権限がないため、subprocessを使用してmongodumpを呼び出すことはできません。 mongoクライアントをvirtualenvにローカルにインストールすることはできますが、

どうもありがとう:-)。

  ベストアンサー

私の比較的小さなデータベースでは、私は最終的に次の解決策を使用しました。大きなデータベースや複雑なデータベースにはあまり適していませんが、私の場合には十分です。すべてのドキュメントをjsonとしてバックアップディレクトリにダンプします。それは厄介ですが、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))
 

  同じタグがついた質問を見る

pythonmongodbpymongomongoengine