使用Python的MongoDB批量插入失败

时间:2019-06-14 04:42:12

标签: python mongodb

我使用以下代码实现了简单的批量上传,假设我可以将预设数量的Json文档(也就是dict的ecpDocSorted)聚合到批量列表中,然后刷新它,例如在收集了5个文档之后。 ecpDocSorted包含一个简单的Json结构-所有不带ID的键/值。

代码段如下所示

     #
     # Sorting the ecpDoc by keys
     #
     for k in sorted(ecpDoc.keys()):
         ecpDocSorted[k] = ecpDoc[k]
     ecpDoc    = dict(ecpDocSorted)

    #
    # Insert into MongoDB
    #
    bulk.append(ecpDocSorted)
    if len(bulk) == 5:
        # insert into Mongo
        result = mycol.insert_many(bulk)
        print(result)
        bulk = []

上传单个文档(使用len(bulk)== 1)工作正常,文档最终在Mongo中存储。

对于其他任何数字(例如len(bulk)== 5),它都会失败,并显示以下错误:

raise BulkWriteError(full_result)
pymongo.errors.BulkWriteError: batch op errors occurred

我想念什么?

根据评论添加:

ecpDocSorted示例:

{'address1': 'SOME ADDRESS', 'city': 'Arecibo', 'country': 'US', 'languages': 'English', 'name': 'SOME NAME', 'phone': '123-123-1234', 'postalcode': '00612'}

1 个答案:

答案 0 :(得分:0)

问题似乎出在ecpDocSorted。

使用

bulk.append(ecpDoc)  

代替

bulk.append(ecpDocSorted)

它很好用。