我知道我可以使用<collection>.withReadPreference(primaryPreferred()).find(...)
为每个查询设置readPreference。但是,如果可能的话,我更愿意将全局默认的readPreference设置为使用“nearest”,然后如有必要,可以为各个查询覆盖它。使用Jongo有可能/首选的方法吗?
编辑:由于Jongo是使用MongoClient().getDB()
初始化的,因此是否适合用指定ReadPreference的选项初始化我的MongoClient?我想我要问的是 - 如果我这样做,这些设置是否会延续并应用于Jongo内部,或者是否有不同的方式直接在Jongo中处理它?
提前致谢。
答案 0 :(得分:0)
可能应该在问之前尝试过,但我会为将来可能有这个问题的人提供答案。简短的回答是 - 是的,使用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副本集的辅助成员读取,如果/当这些成员具有最低延迟时。