PyMongo
或 mongoengine
中是否有与 MongoDB 的 mongodump
等效的功能?我似乎在文档中找不到任何东西。
用例:我需要定期备份远程 mongo 数据库。 native 是生产服务器,没有安装mongo,我没有admin权限,所以不能使用subprocess
调用mongodump
。我可以在 virtualenv 上本地安装 mongo 客户端,但我更喜欢 API 调用。
非常感谢:-)。
最佳答案
对于我相对较小的小型数据库,我最终使用了以下解决方案。它不太适合大型或复杂的数据库,但对于我的情况来说已经足够了。它将所有文档以 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))
关于python - PyMongo/Mongoengine 相当于 mongodump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24610484/