如何在Python中转储json文件时跳过或修改字段?
我正在以json格式转储Python中的MongoDB数据库。这是我的部分代码如何在Python中转储json文件时跳过或修改字段?,python,json,mongodb,pymongo,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添加了
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添加了一个自己归档的\u id
,并创建了一个类似“\u id”:{“$oid”:“5c2b4813e43eda7815444204”}
。这将创建一个错误,即从该json文件加载时,键“$oid”不能以“$”开头。
。所以我在想,在导出数据库时,是否可以同时修改或跳过这个字段?我该怎么做
{
"Employee ID": 9771504,
"NAME": "Harsh Wardhan",
"DOB": "14-Apr",
"MOBILE": 12345697890,
"Group": "SW-VS",
"_id": {
"$oid": "5c2b4813e43eda7815444204"
},
"Emai ID": "hwardhan@examples.com"
}
假设为游标中的每个条目添加了额外的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)
假设为游标中的每个条目添加了额外的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)
您提供的示例是1
doc
?(又名,是否为每个文档添加了id字段?)。为每个文档添加id字段。为什么不在编码之前更改名称/跳过该字段?您提供的示例是1doc
?(又名,是否为每个文档添加了id字段?)。每个文档都会添加id字段。为什么不在编码之前更改名称/跳过该字段呢?不过有一个问题。每次运行时都会在json文件中添加重复的行。如果您像以前那样在w
write模式下打开json文件,则不会,该文件会被覆盖。不过有一个问题。每次运行时都会向json文件追加重复的行。如果您像以前那样在w
write模式下打开json文件,则不会,该文件将被覆盖。