python - PyMongo/Mongoengine 相当于 mongodump

标签 python mongodb pymongo mongoengine

PyMongomongoengine 中是否有与 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/

相关文章:

python - 用有序字典替换字典推导式和defaultdict

python - 从 YAML 加载序列化对象并用它替换当前对象

mongodb - mongo查询多个条件

mongodb - 在 Pymongo 中创建集合之间的关系并渲染它 Jinja

python - vscode : How to disable auto breaking too long lines?

python - 如何从 pandas 数据框列的元组中的一个位置获取所有值?

javascript - 如何使用 Mongoose 从数组中删除对象

c# - MongoDB C# 驱动程序中的部分更新 - 字典问题

python - MongoClient 在 fork 之前打开。创建 MongoClient

mongodb - 使用 Pymongo 和 Flask 检索 MongoDB 中的最后一个文档