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 的次要成员中读取那些可用的延迟最低的成员。
我知道我可以使用 <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 的次要成员中读取那些可用的延迟最低的成员。