Jongo MongoDB:如何指定默认的 ReadPreference

Jongo MongoDB: How to specify a default ReadPreference

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

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

提前致谢。

可能应该在问之前尝试过,但我会为将来可能有此问题的任何人提供答案。简短的回答是 - 是的,使用 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 ReplicaSet if/when 的次要成员中读取那些可用的延迟最低的成员。