【问题标题】:How to ignore errors while executing a bulk insertion in Pymongo. I am using ordered bulk write operation in pymongo如何在 Pymongo 中执行批量插入时忽略错误。我在 pymongo 中使用有序的批量写入操作
【发布时间】:2015-08-12 01:44:27
【问题描述】:

我正在尝试在 mongodb 集合中批量插入一些文档。

我对我收藏的 link 字段施加了独特的限制。

bulkUrls = db.urls.initialize_ordered_bulk_op()

for info in links:
    info = urljoin(url['link'], info)
    if '#' in info:
        info = info[:info.index('#')]
        if(validateUrl(info)):
            bulkUrls.insert({'link' : info, 'last_processed' : 0,     'created_at' : time(), 'page_id' : str(inserted_id), 'opened' : False})
bulkUrls.execute()

附上我的python代码。 我只想在集合中不存在具有相同 link 字段的其他文档时才插入文档。

我们将不胜感激。

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    如果您不必使用有序批量,则可以使用无序批量操作。

    无序的批量写入操作被批处理并以任意顺序发送到服务器,在那里它们可以并行执行。在尝试所有操作后报告发生的任何错误。 来自pymongo documentation

    所以简单地使用:

    bulkUrls = db.urls.initialize_unordered_bulk_op()
    

    如果您坚持使用有序批量,您可以将写入关注度设置为 0。

    根据上面相同的链接,

    bulkUrls.execute({'w': 0})
    

    注意:这将禁用写入确认,这意味着您将不知道写入操作是否成功(“不推荐”)。

    【讨论】:

    • Thanx ... 使用无序解决了我的问题。我之前没有完全检查过文档……我的错。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2017-07-12
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多