如何在Python中转储json文件时跳过或修改字段?

时间:2019-01-01 11:36:12

标签: python json mongodb pymongo

我正在以json格式以Python转储MongoDB数据库。这是我的代码的一部分

cursor = collection.find()

with open(json_file_path, 'w') as outfile:
    dump = json.dumps([doc for doc in cursor], sort_keys=False, indent=4, default=json_util.default)
    outfile.write(dump)

问题在于pymongo添加了一个自己提交的_id并创建了一个"_id": {"$oid": "5c2b4813e43eda7815444204"}之类的条目。这会导致从此json文件加载时发生key '$oid' must not start with '$'的错误。因此,我在考虑在导出数据库本身时是否可以同时修改或跳过该字段?我该怎么办?

{
    "Employee ID": 9771504, 
    "NAME": "Harsh Wardhan", 
    "DOB": "14-Apr", 
    "MOBILE": 12345697890, 
    "Group": "SW-VS", 
    "_id": {
        "$oid": "5c2b4813e43eda7815444204"
    }, 
    "Emai ID": "hwardhan@examples.com"
}

1 个答案:

答案 0 :(得分:2)

假设为光标中的每个条目都添加了额外的ID,则可以在使用dict理解之前将其过滤掉。

cursor = collection.find()

with open(json_file_path, 'w') as outfile:
    dump = json.dumps([{k:v for k,v in doc.items() if k != "_id"} for doc in cursor],
                      sort_keys=False, indent=4, default=json_util.default)
    outfile.write(dump)