Pymongo在插入许多时忽略无效文档错误



>我有一个非常大的数据集(为nginx日志文件提取(,并且文档的某些键包含.,这可能会导致invaliddocument error

与其过滤掉这些无效文档或替换键内的点,我宁愿忽略这些文档,有什么方法可以在insert_many时忽略无效文档pymongo

通常,您可以通过设置 ordered=False 参数来"忽略"insert_many上的错误;但是对于显然是设计使然的无效文档,这仍然失败。

但是,您可以执行以下操作:

import pymongo
import bson.errors
db = pymongo.MongoClient()['mydatabase']
data_to_load = [{"ok": 1},
{"ok": 2},
{"not.ok": 3},
{"ok": 4},
{"ok": 5}]
for item in data_to_load:
try:
db.testdata.insert_one(item)
except bson.errors.InvalidDocument:
pass
for item in db.testdata.find({}, {'_id': 0}):
print(item)

结果:

{'ok': 1}
{'ok': 2}
{'ok': 4}
{'ok': 5}

最新更新