Как пропустить или изменить поле при выводе файла JSON в Python? - PullRequest
0 голосов
/ 01 января 2019

Я выгружаю базу данных MongoDB в Python в формате json.Вот часть моего кода

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"}.Это создает ошибку, key '$oid' must not start with '$' при загрузке из этого файла JSON.Поэтому я подумал, смогу ли я изменить или пропустить это поле все вместе при экспорте базы данных?Как я могу это сделать?

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

1 Ответ

0 голосов
/ 01 января 2019

Предполагая, что дополнительный идентификатор добавляется для каждой записи в курсоре, вы можете просто отфильтровать его перед тем, как писать, используя диктовку.

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)
...