当前位置: 首页 > 知识库问答 >
问题:

如何将Mongodb Atlas连接到Spring

宋宏毅
2023-03-14

我有一个web应用程序,它使用Spring Boot来处理后端逻辑。我正在尝试集成mongodb以跟踪有关此webapp用户的一些信息。我在mongodb Atlas上创建了一个数据库,通过Mongo Shell连接正常。当我尝试与Spring连接时,问题就出现了。让我给你看看所有的细节

在Atlas中,我将此IP地址(0.0.0.0/0(包括您当前的IP地址))添加到安全性中

然后我创建了一个名为“测试”的集合。

如果我点击我的集群,然后点击连接按钮,它会问我要连接哪种模式。我选择“连接您的应用程序”,然后我必须选择驱动程序和版本。我分别选择“Java”和“3.6或更高版本”(我不确定它是否是正确的版本,替代版本是3.4或3.3)。最后它向我显示连接字符串,即:

mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retryWrites=true&w=majority

要使用Spring连接到Atlas,我正在使用此依赖项

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
</dependency>

应用程序内部。属性文件我有这两行代码来配置mongo。

spring.data.mongodb.host=mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retryWrites=true&w=majority
spring.data.mongodb.port=27017

而不是我输入的密码,原因很明显。

唯一的问题是,当我启动Spring Boot时,我会继续收到以下错误消息:

2020-02-25 16:31:25.605  INFO 41162 --- [=majority:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retrywrites=true&w=majority:27017

com.mongodb.MongoSocketException: mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retrywrites=true&w=majority: nodename nor servname provided, or not known
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:188) ~[mongo-java-driver-3.6.4.jar:na]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:59) ~[mongo-java-driver-3.6.4.jar:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.java:57) ~[mongo-java-driver-3.6.4.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongo-java-driver-3.6.4.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) ~[mongo-java-driver-3.6.4.jar:na]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: java.net.UnknownHostException: mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retrywrites=true&w=majority: nodename nor servname provided, or not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_111]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[na:1.8.0_111]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[na:1.8.0_111]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276) ~[na:1.8.0_111]
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_111]
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_111]
    at java.net.InetAddress.getByName(InetAddress.java:1076) ~[na:1.8.0_111]
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:186) ~[mongo-java-driver-3.6.4.jar:na]
    ... 5 common frames omitted

我不知道该怎么做才能让它发挥作用。我错过了什么吗?

解决方案

正如@barrypicker所建议的,问题出在属性文件中。我没有使用spring.data.mongodb.hostspring.data.mongodb.uri.现在它工作得很好。

spring.data.mongodb.uri=mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retryWrites=true&w=majority

即使没有spring.data.mongodb.port

共有2个答案

尤钱明
2023-03-14

在"pom.xml"文件中使用此依赖项

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

在“application.properties”中

使用“spring.data.mongodb.uri”

spring.data.mongodb.uri = mongodb+srv://<user>:<password>@<cluster_name>.mogodb.net/<dbname>
乐正翰
2023-03-14

好吧,我想你应该把你的应用程序连接到Mongo Atlas。属性应具有spring。数据mongodb。uri而不是spring。数据mongodb。主机<代码>Spring。数据mongodb。uri:mongodb://

 类似资料:
  • 我正在尝试将 kafka 与 windows 上的 mysql 连接起来。我没有使用汇合。我的 kafka 版本是 2.12 我已经启动了动物园管理员、Kafka、生产者和消费者,这一切都很好用。 我的MysQL版本是8.0.15 我已经在libs文件夹中复制了这3个jar文件 我的源代码quickstart mysql。属性文件代码为 当我运行命令时 我在控制台上收到此错误 请帮助我。 我也试过

  • 问题内容: 我的Java程序出现这些错误。我已经把我的类路径放在里面了。如何解决呢? 代码: 问题答案: 您需要从下载MySQL包:这里并将其放置在库中,我将修改在少数分钟excact步骤 这是连接数据库的正确语法: 希望这可以帮助

  • 我在我的运行系统中有MongoDB和Robomongo,我使用Robomongo作为客户端。 我已将MongoDB安装在另一个系统上,我将其视为服务器,我想将我系统的Robomongo(作为客户端)连接到另一个系统(服务器)上的MongoDB。我应该采取哪些步骤来实现同样的目标? 我使用的是机器名,因为系统的IP地址不是静态的。但即使我使用系统的IP地址,我也会遇到同样的错误: 连接失败,无法连接

  • 我正在尝试将node.js连接到MySQL,但失败了。我已经安装了MySQL和相关库。如何解决此错误?另外,如果我想让数据响应为原生的,我应该如何去做呢? 收到的错误消息:

  • 问题内容: 我可以使用tns文件从plsql连接到数据库 现在,我想使用JDBC从Java连接到数据库。 我试过的 我搜索谷歌,我发现我必须使用此连接字符串: 我的电脑名称是 myPC 在tnsfile中写入的端口是 5151 所以我尝试了这个连接字符串 但我有这个例外 我究竟做错了什么? 如何使用tns文件将JDBC连接到数据库? 问题答案: 您必须设置一个名为的属性,以指向包含您的文件的文件夹

  • 我可以使用tns文件从plsql连接到数据库 现在我想使用JDBC从我的Java连接到数据库。 我在谷歌上搜索,我发现我必须使用这个连接字符串: