当前位置: 首页 > 知识库问答 >
问题:

是否可以将mongodb writeconcern设置为仅忽略重复的密钥错误?

南门英飙
2023-03-14

在插入到mongob中时,我是否可以将写入内容设置为只忽略重复键错误的内容?我想完全忽略这些错误,但仍能抓住其他错误。我特别想知道我是否失去了与数据库的连接,或者mongod本身是否已经崩溃。(我在一个研究网络上,所以这两件事并不总是最可靠的。)

我看到的writeconcern似乎很接近,但尚未得到承认,但我不清楚它到底会捕获什么,以及什么会被忽略。

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

我避免使用默认的写取证,只是简单地捕获异常,因为我不想要异常开销。我期望重复键的数量会很高。这是一个愚蠢的问题吗?

共有1个答案

云丰
2023-03-14

有关写关注的官方留档显示了写关注设置的选项。

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

下一个最佳的WriteCaren({w: 1, j: 0, fsync: 0},或WriteCaren. SAFE)等待副本集的主节点的确认,因此它将报告 <罢工> 主键 唯一的索引错误。

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

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

 类似资料:
  • 我有一个bash脚本,我想全局启用set-e。 但是,与其一直禁用它并重新启用它,我想知道是否有一种方法可以有时选择性地禁用错误处理。例如,从systemd运行的命令可以在前面加上一个减号来忽略错误。bash有等效的吗? e. g. 由于需要启用/禁用很多,我不想继续执行以下操作:

  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • 我得到了“错误o.a.j.e.RegexExtractor:模式错误:等等b;啊等等”作为我的调试错误之一。是否可以将其设置为忽略或至少不在Jeter调试日志中显示任何错误? 谢谢,P

  • 问题内容: 我知道可以偏斜,但我看不到以特定角度偏斜每个角的方法。 这是我正在从事的项目: 专门查看菜单中的标签。现在,我正在使用图像,我想针对功能强大的浏览器进行更改。 我知道可以创建CSS trapazoid,但是使用没有内容的边框。最终结果还需要一些圆角。 问题答案: 这可能是一个大概的想法:

  • 我很好奇是否可以将iOS设置(例如位置/图片)重置为默认设置,这样用户每次都会被问到是否允许位置或相机使用。 目前,我正在尝试用Ionic/Cordova做这件事。 也许你们中有人知道怎么做,或者能告诉我这是不是可能的。

  • 我们在cloudfoundry使用flyway。简而言之,我们无法控制数据库的用户名/密码(根据设计),它是一个非常长的字符串,长度超过30个字符。尝试运行迁移时,出现以下错误: 是否可以将flyway配置为忽略元数据表中的installed by列?我怀疑这可以通过建造一个更大的列的flyway来解决,或者通过连接用户名来解决。 编辑 我可以通过登录数据库并手动将列扩展到50个字符来缓解此问题: