Jongo MongoDB:如何指定默认的ReadPreference

时间:2015-02-09 19:21:26

标签: java mongodb mongodb-java jongo

我知道我可以使用<collection>.withReadPreference(primaryPreferred()).find(...)为每个查询设置readPreference。但是,如果可能的话,我更愿意将全局默认的readPreference设置为使用“nearest”,然后如有必要,可以为各个查询覆盖它。使用Jongo有可能/首选的方法吗?

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

提前致谢。

1 个答案:

答案 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副本集的辅助成员读取,如果/当这些成员具有最低延迟时。