我用下面的代码实现了一个简单的批量上传,假设我可以将预设数量的Json文档(也称为ecpDocSorted,这是一个字典)聚合到一个批量列表中,并在收集了5个文档后刷新它。ecpDocSorted包含一个简单的Json结构-所有键/值都没有ids。
代码片段如下所示
#
# 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'}发布于 2019-06-14 13:41:26
问题似乎出在ecpDocSorted上。
在使用时
bulk.append(ecpDoc) 而不是
bulk.append(ecpDocSorted)它工作得很好。
https://stackoverflow.com/questions/56591480
复制相似问题