2015-02-09 149 views
0

我知道我可以使用<collection>.withReadPreference(primaryPreferred()).find(...)为每个查询设置readPreference。但是,如果可能的话,我宁愿将全局默认readPreference设置为使用“nearest”,然后在必要时能够覆盖个别查询。使用Jongo有没有可能/首选的方法?Jongo MongoDB:如何指定默认的ReadPreference

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

提前致谢。

回答

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副本集的次要成员读取,如果/当这些成员以最低延迟可用时。