【问题标题】:build a dynamic JSON object from the MONGODB , create a .json file and save the object to it从 MONGODB 构建一个动态 JSON 对象,创建一个 .json 文件并将对象保存到其中
【发布时间】:2017-05-15 15:13:53
【问题描述】:

假设我们有我们的 MongoDB,我们想将数据备份到 .json 文件中
输出文件示例:database.json 和内部:

    {
  "collections": [
    {"name": "admin"},
    {"name": "class"},
    {"name": "lesson"},
    {"name": "message"},
    {"name": "room"},
    {"name": "student"},
    {"name": "subject"},
    {"name": "teacher"}
  ],
  "subjects": [
    {
      "name": "Null",
      "color": "#FFFFFF"
    },
    {
      "name": "Design Art",
      "color": "#82B9D6"
    },
    {
      "name": "Plastic Art",
      "color": "#a3db05"
    },
    {
      "name": "Media And Production",
      "color": "#522a64"
    }, //...there is a continue to this file ....
 }

每个集合都应该添加到 collections 中,并且每个集合都应该有一个包含所有信息的数组(如上所示)

我正在使用带有 pymongo 驱动程序的 python 3.4。
从数据库获取所有信息、创建 JSON 对象并将其插入到 new .json 文件

的最佳方法是什么

【问题讨论】:

    标签: json mongodb python-3.x pymongo


    【解决方案1】:

    我发现了这种方法:

    import json
    from pymongo import MongoClient
    from pprint import pprint
    
    
    def main():
        with open('../config/database.json') as database_config:
            config = json.load(database_config)
    
        client = MongoClient(config["mongodb"])
        db = client[config["database"]]
        data = dict()
    
        data["collections"] = db.collection_names()
    
        for collection_name in db.collection_names():
            data[collection_name] = get_collection(db, collection_name)
        pprint(data)
        insert_data_to_file(data)
    
    
    def get_collection(db, collection_name):
        collection_list = []
        collection = db[collection_name]
        cursor = collection.find({})
        for document in cursor:
            _id = document.pop('_id')
            document['_id'] = str(_id)
            collection_list.append(document)
        return collection_list
    
    
    def insert_data_to_file(data):
        with open('database.json', 'x') as database:
            json.dump(data, database, sort_keys=True)
    
    
    main()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 2021-12-18
      • 2018-12-21
      • 1970-01-01
      • 2020-06-07
      • 2021-12-24
      相关资源
      最近更新 更多