将springboot java应用程序连接到外部mongodb

j2qf4p5b  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(406)

我在尝试将基本的本地maven springboot java应用程序连接到外部mongodb时遇到了很多麻烦。
即使只是尝试使用mongo控制台本身,也花了很长时间来理解语法。下面的示例我终于成功地连接到了(我通过批处理脚本运行)

...\mongo.exe "mongodb://serv1.unix.abc:27018,serv2.unix.abc:27018,ser3.unix.abc:27018/test?replicaSet=asdfg01h" --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username="user@THATDOMAIN.COM" --password="password" -ssl --sslCAFile=C:\mongo\ca.pem

(使用mongo v 4.2.8 enterprise)
在java方面(使用jdk11、maven 3.6.1、springboot2.4.0),连接到本地mongo示例非常容易。我只需要在application-local.yml中添加一个基本uri:

spring.data.mongodb.uri: mongodb://localhost:27017/localtest

只需添加以下代码:

@Autowired
private MongoClient mongoClient;
..
..
MongoDatabase myDatabase = mongoClient.getDatabase("localtest");

但我真的不知道如何连接到与我上面编写的mongo控制台脚本相同的外部数据库。仅使用uri似乎不起作用。我认为这是因为复杂性,因为有很多变量要考虑。
复制集(3台主机)
gssapi认证机制
$外部身份验证数据库
同时提供用户名和密码(我看到的gssapi示例代码由于某些原因在任何地方都没有提到密码)
启用ssl
并指向sslcapem文件
我看到了各种使用mongoclientations mongocredential mongoclientsettings的示例
但是我一直在努力让它工作,特别是当一些文章使用不推荐的特性时。有什么帮助吗?

4bbkushb

4bbkushb1#

修改为:

spring:
  data:
    mongodb:
      uri: mongodb://user@THATDOMAIN.COM:password!@serv1.unix.abc:27018,serv2.unix.abc:27018,ser3.unix.abc:27018/test?replicaSet=asdfg01h&authMechanism=GSSAPI&authSource=$external&&tls=true&&tlsCAFile=C:/mongo/ca.pem

在这里阅读更多关于mongodb连接字符串uri选项的信息。

相关问题