Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jongo MongoDB:如何指定默认的ReadPreference_Java_Mongodb_Mongodb Java_Jongo - Fatal编程技术网

Java Jongo MongoDB:如何指定默认的ReadPreference

Java Jongo MongoDB:如何指定默认的ReadPreference,java,mongodb,mongodb-java,jongo,Java,Mongodb,Mongodb Java,Jongo,我知道我可以使用.withReadPreference(primaryPreferred()).find(…)为每个查询设置readPreference。但是,如果可能的话,我更愿意将全局默认readPreference设置为使用“最近的”,然后在必要时能够覆盖单个查询。使用Jongo是否有可能/首选的方法 编辑:由于Jongo是使用MongoClient().getDB()初始化的,因此是否适合使用指定ReadPreference的选项初始化我的MongoClient?我想我要问的是——如果我

我知道我可以使用
.withReadPreference(primaryPreferred()).find(…)
为每个查询设置readPreference。但是,如果可能的话,我更愿意将全局默认readPreference设置为使用“最近的”,然后在必要时能够覆盖单个查询。使用Jongo是否有可能/首选的方法

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


提前感谢。

可能在提问之前就应该尝试一下,但我将为将来可能有此问题的任何人提供答案。简单的回答是-是的,使用MongoClientOptions对象通过MongoClient设置它将转到Jongo

具体来说,我在构建选项的方法中使用了类似的内容(为了本例的清晰性,我将其设置得比我必须的更详细):

然后您可以实例化一个
新的MongoClient(新的服务器地址(…),this.getOptions())
并使用该客户端实例获取数据库引用,该引用最终用作实例化Jongo的参数

很明显,我这样做的原因是能够读取MongoDB ReplicaSet的辅助成员,前提是这些成员具有最低的延迟

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;
}