首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python的MongoDB大容量插入失败

使用Python的MongoDB大容量插入失败
EN

Stack Overflow用户
提问于 2019-06-14 12:42:13
回答 1查看 53关注 0票数 0

我用下面的代码实现了一个简单的批量上传,假设我可以将预设数量的Json文档(也称为ecpDocSorted,这是一个字典)聚合到一个批量列表中,并在收集了5个文档后刷新它。ecpDocSorted包含一个简单的Json结构-所有键/值都没有ids。

代码片段如下所示

代码语言:javascript
复制
     #
     # 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),它将失败,并显示以下错误:

代码语言:javascript
复制
raise BulkWriteError(full_result)
pymongo.errors.BulkWriteError: batch op errors occurred

我遗漏了什么?

基于评论添加:

ecpDocSorted示例:

代码语言:javascript
复制
{'address1': 'SOME ADDRESS', 'city': 'Arecibo', 'country': 'US', 'languages': 'English', 'name': 'SOME NAME', 'phone': '123-123-1234', 'postalcode': '00612'}
EN

回答 1

Stack Overflow用户

发布于 2019-06-14 13:41:26

问题似乎出在ecpDocSorted上。

在使用时

代码语言:javascript
复制
bulk.append(ecpDoc)  

而不是

代码语言:javascript
复制
bulk.append(ecpDocSorted)

它工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56591480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档