来自Java的MongoDB连接:如何在给定连接URI的情况下配置编解码器

时间:2016-12-20 10:47:16

标签: java mongodb

我有Java webapp,它连接到MongoDB,并利用自定义编解码器将域特定的Java POJO编码/解码到MongoDB文档。连接URL通过环境变量提供给应用程序。该URL可以包含选项,但是根据URL格式文档https://docs.mongodb.com/manual/reference/connection-string/,无法在URL中指定编解码器。 所以我的自然选择是使用MongoClientOptions构建器将URI和新CodecRegistry中的选项与我的编解码器结合起来:

MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
    mongoURI.getOptions()).codecRegistry(myCodecRegistry).build();

问题是MongoClient不提供接受URI和MongoClientOptions的构造函数,那里的构造函数只接受URI:

public MongoClient(final MongoClientURI uri) {
    super(uri);
}

这使得我手动解析URI从MongoClient私有方法复制一些代码,然后使用其他构造函数接受选项。 我想找到一个更好的方法来配置MongoClient与自定义编解码器。 我使用的是Mongo Java驱动程序版本3.3.0

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情。

 MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
 mongoURI.getOptions()).codecRegistry(myCodecRegistry).build();
 MongoClientURI mongoClientUri = new MongoClientURI(uri, optsWithCodecs);
 MongoClient mongoClient = new MongoClient(mongoClientUri);

答案 1 :(得分:1)

Builder optionsBuilder = MongoClientOptions.builder().codecRegistry(myCodecRegistry);
MongoClient mongo = new MongoClient(new MongoClientURI(connectionString, optionsBuilder));