【问题标题】:Jongo MongoDB: How to specify a default ReadPreferenceJongo MongoDB:如何指定默认的 ReadPreference
【发布时间】:2015-02-09 19:21:25
【问题描述】:

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

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

提前谢谢。

【问题讨论】:

    标签: java mongodb mongodb-java jongo


    【解决方案1】:

    可能应该在提问之前尝试过,但我会为将来可能有这个问题的任何人提供答案。简短的回答是 - 是的,使用 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 的辅助成员中读取,如果/当这些辅助成员以最低延迟可用时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多