春天mongodb写关注值

ink*_*iti 5 spring mongodb

我在spring中有以下核心mongo选项配置:

<mongo:mongo host="${db.hostname}" >
  <mongo:options
    connections-per-host="40"
    threads-allowed-to-block-for-connection-multiplier="1500"
    connect-timeout="15000"
    auto-connect-retry="true"
    socket-timeout="60000"
    write-number="1"
    write-fsync="false"/>
</mongo:mongo>
Run Code Online (Sandbox Code Playgroud)

我想知道的是关于不同的写号选项,它与写无关,正常,安全等问题有关.

我可以假设write-number到writeconcern的映射如下所示吗?

NONE: -1
NORMAL: 0
SAFE: 1 (default)
FSYNC_SAFE: 2
REPLICAS_SAFE: 3
JOURNAL_SAFE: 4
MAJORITY: 5  
Run Code Online (Sandbox Code Playgroud)

以下链接为在spring中设置mongo选项提供了很好的帮助,但对于写号值不够具体: 如何配置MongoDB Java驱动程序MongoOptions以供生产使用?

Asy*_*sky 3

写入关注数是“w”的值,它映射到当 w > 1 时写入必须传播到才被视为成功的副本数。

FSYNC_SAFE 映射到设置 write-fsync (true 或 false),并且由于 JOURNAL_SAFE 也是一个布尔值,我怀疑 Spring 中有类似的布尔设置,但我在他们的任何文档中都找不到它。

如果您已经安装了所有内容来凭经验进行测试,只需尝试几种配置并检查生成的写入问题的实际设置,例如:

       WriteConcern wc = new WriteConcern(); // should get your default write concern
       System.out.println(wc.getJ());
       System.out.println(wc.getFsync());
       System.out.println(wc.getW());
Run Code Online (Sandbox Code Playgroud)

这应该显示 Journal 设置、Fsync 设置(均为布尔值)、W(作为 int)。