我使用以下代码实现了简单的批量上传,假设我可以将预设数量的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'}
答案 0 :(得分:0)
问题似乎出在ecpDocSorted。
使用
bulk.append(ecpDoc)
代替
bulk.append(ecpDocSorted)
它很好用。