繁体   English   中英

pymongo在insertmany时忽略invaliddocument错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM