0

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

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

提前谢谢。

4

1 回答 1

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

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

需要明确的是,我这样做的原因是能够从 MongoDB ReplicaSet 的辅助成员中读取,如果/当这些成员以最低延迟可用时。

于 2015-02-09T21:23:13.860 回答