Java中的Mongo数据库连接

时间:2016-10-23 03:24:41

标签: java mongodb virtual-machine database

只是玩弄虚拟服务器,试图提高我的技能。

所以我正在尝试连接到本地托管的mongoDB并遇到一些问题。想要迭代一个集合并得到一些输出,所以我知道我有点连接。问题是我无法看到一种简单的方法来将集合(我认为我有)转换为java理解的东西。我使用3.4 java驱动程序运行mongo3.2。如果这很重要,我也在运行Ubuntu 16.04。 仍然没有复制并粘贴到我的虚拟机上工作所以我会附上一些显示数据库状态的图片。enter image description here enter image description here 这是我的java应用程序代码

Oct 23, 2016 3:59:45 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Connect to database successfully
Oct 23, 2016 3:59:45 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
Oct 23, 2016 3:59:46 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]
BUILD SUCCESSFUL (total time: 31 seconds)

和输出。

{{1}}

1 个答案:

答案 0 :(得分:0)

可能应该更清楚。我正在使用在Windows(虚拟盒)上运行的Ubuntu虚拟机来托管服务器并尝试从Windows访问它。

修复了通过更改mongo配置文件以包含虚拟机的192.xx ..地址,然后在通过java连接时使用它。环回地址'localhost'对于机器来说是唯一的。我的虚拟机和我的主系统无法访问。