该方法的第二个参数是定义操作是否应按顺序执行以及应该使用什么写入关注的选项。
但它并没有说如何来设置写入问题。我已经尝试过各种我能想到的方式:
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
答案 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的即将到来的答案: - )