如何在Pymongo中执行批量插入时忽略错误。我在pymongo中使用有序批量写入操作

时间:2015-08-11 15:29:13

标签: python mongodb pymongo

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

我对我的收藏品的链接字段施加了一个独特的约束。

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字段的其他文档时才插入文档。

帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

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

无序批量写入操作被批处理并以任意顺序发送到服务器,它们可以并行执行。尝试所有操作后,将报告发生的任何错误。 来自http://jsfiddle.net/0a499j2L/3/

所以简单地使用:

bulkUrls = db.urls.initialize_unordered_bulk_op()

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

根据上面的相同链接,

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

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