如何在Ruby MongoDB bulk_write上将写入关注设置为0?

时间:2015-07-03 14:13:08

标签: ruby mongodb

The Ruby driver tutorial州:

  

该方法的第二个参数是定义操作是否应按顺序执行以及应该使用什么写入关注的选项。

但它并没有说如何来设置写入问题。我已经尝试过各种我能想到的方式:

ImageViewer

它们都不起作用,并且该函数仍会引发collection.bulk_write(operations, ordered: false, w: 0) collection.bulk_write(operations, ordered: false, write: 0) collection.bulk_write(operations, ordered: false, writeConcern: 0) collection.bulk_write(operations, ordered: false, write: {w: 0}) 抱怨重复键错误。

那么在使用BulkWriteError时如何将写入关注设置为0?

我使用MongoDB Ruby驱动程序版本2.0

1 个答案:

答案 0 :(得分:0)

我希望将其留给Blakes Seven以获得正确答案,但我想分享我的解决方案。我在几个地方使用这样的批量写入,所以我编写了一个特别忽略重复错误的函数:

a

我这样使用它:

def ignore_bulk_write_duplicates
  fail "Expected a block" unless block_given?

  begin
    yield
  rescue Mongo::Error::BulkWriteError => e
    e.result[:write_errors].each { |error|
      if error["code"] == 11000
        # Duplicate error is OK
      else
        raise
      end
    }
  end
end

此时我假设ignore_bulk_write_duplicates { collection.bulk_write(operations, ordered: false, w: 0) } 将写入问题设为0,但我还没有确认......急切等待Blake的即将到来的答案: - )