繁体   English   中英

Jongo MongoDB:如何指定默认的ReadPreference

[英]Jongo MongoDB: How to specify a default ReadPreference

我知道我可以使用<collection>.withReadPreference(primaryPreferred()).find(...)为每个查询设置readPreference。 但是,我希望将全局默认readPreference设置为在可能的情况下使用“ nearest”,然后在必要时能够为单个查询覆盖此默认值。 有没有可能/首选的方法来使用Jongo?

编辑:由于MongoClient().getDB()是使用MongoClient().getDB()初始化的,因此是否适合使用指定ReadPreference的选项来初始化我的MongoClient? 我想我要问的是-如果我这样做,这些设置是否会延续并应用到Jongo中,或者是否有其他方法可以直接在Jongo中进行处理?

提前谢谢。

可能在提出问题之前应该已经尝试过,但是我将为以后可能遇到此问题的任何人提供答案。 简短的答案是-是的,通过使用MongoClientOptions对象的MongoClient进行设置将继承到Jongo。

具体来说,我在构建选项的方法中有这样的东西(使该示例比为清晰起见而更加冗长):

protected MongoClientOptions getOptions(){
    MongoClientOptions mClientOpts;
    Builder mClientOptionsBuilder = new MongoClientOptions.Builder();
    mClientOptionsBuilder.readPreference(ReadPreference.nearest());
    mClientOpts = mClientOptionsBuilder.build(); 
    System.out.println("[MongoConfig]: " + mClientOpts.toString());

    return mClientOpts;
}

然后,您可以实例化一个new MongoClient(new ServerAddress(...), this.getOptions()); 并使用该客户端实例获取您的数据库引用,该引用最终用作实例化Jongo的参数。

需要明确的是,我这样做的原因是,如果/当延迟最小时,它们可以从MongoDB ReplicaSet的次要成员中读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM