我知道我可以使用readPreference为每个查询设置<collection>.withReadPreference(primaryPreferred()).find(...)。但是,如果可能的话,我希望设置一个全局默认的readPreference,以便使用“最近的”,如果有必要的话,可以重写单个查询。是否有一种使用Jongo的可能/首选的方法来做到这一点?
编辑:由于Jongo是使用MongoClient().getDB()初始化的,因此是否适合使用指定ReadPreference的选项初始化MongoClient?我想我要问的是-如果我这样做,这些设置会继续并应用在Jongo内部,还是有一种不同的方法直接在Jongo处理?
提前谢谢。
发布于 2015-02-09 21:23:13
也许应该先试一试,然后再问,但我会为将来可能有这个问题的人提供一个答案。简单的回答是-是的,使用MongoClient对象通过MongoClientOptions设置它将传递到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的辅助成员那里读取,如果/当这些成员可用时,这些成员的延迟最低。
https://stackoverflow.com/questions/28417598
复制相似问题