可以将mongodb writeconcern设置为仅忽略Duplicate Key错误吗?

时间:2013-11-08 22:35:39

标签: java mongodb

在mongodb的插入中,我可以将writeconcern设置为只忽略Duplicate Key错误的东西吗?我想完全忽略这些错误,但是如果出现其他问题仍然可以解决。我特别想知道我是否丢失了与数据库的连接,或者mongod本身是否已经崩溃。 (我在研究网络上,所以这两件事并不总是最可靠的。)

我认为似乎已经接近的写作关注是UNACKNOWLEDGED,但我并不清楚它究竟会捕捉到什么以及将被忽略的内容。

我的应用程序是用Java编写的mongo驱动程序版本2.10.1并使用mongo版本2.4.6

我正在避免使用默认的writeconcern并只是捕获异常,因为我不想要异常开销。我希望重复密钥的数量很高。这是一个愚蠢的问题吗?

1 个答案:

答案 0 :(得分:3)

有关WriteConcern的官方文档显示了WriteConcern设置的选项。

WriteConcern.UNACKNOWLEDGED{w:0,j:0,fsync:0})会报告网络错误,因此您已经覆盖了这些错误。当数据库崩溃时,与它的连接将立即中断(当操作系统仍在运行时)或在几秒钟内(当整个操作系统甚至物理服务器崩溃时)超时,所以你应该也很快注意到

下一个最好的WriteConcern({w:1,j:0,fsync:0}WriteConcern.SAFE)等待副本集的主要确认,因此它将报告主键唯一索引错误。

如果有一个设置会使服务器在收到数据之后但在解释之前做出响应,那么它就不会快得多。验证BSON语法通常很便宜,并且检查任何唯一索引中的冲突并不是那么昂贵。至少与网络往返时间相比。

当您担心在Java中捕获异常的性能时:Java中的异常处理也不贵。