[英]PyMongo Encoding Error: bson.errors.InvalidDocument: cannot encode object
[英]pymongo ignore invaliddocument error when insertmany
我有一个非常大的数据集(该数据集是为nginx日志文件提取的),文档的某些键包含.
,这可能会导致invaliddocument error
。
我insert_many
过滤掉这些无效的文档或替换键中的点,而是更喜欢忽略这些文档,当使用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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.