【发布时间】:2016-10-23 03:24:40
【问题描述】:
只是玩弄虚拟服务器,试图提高我的技能。
所以我正在尝试连接到本地托管的 mongoDB 并遇到一些问题。想要遍历一个集合并获得一些输出,所以我知道我已经连接了某种东西。问题是我看不到将集合(我想我有)转换为 java 理解的简单方法。我正在使用 3.4 java 驱动程序运行 mongo3.2。如果这很重要,我也在运行 Ubuntu 16.04。 还没有复制和粘贴到我的虚拟机工作,所以我将附上几张显示数据库状态的图片。 这是我的 java 应用程序代码
static String user = "guest";
static String database = "VsJogger";
static char[] password = {'g','u','e','s','t'};
public static void main(String[] args) {
MongoCredential credential = MongoCredential.createCredential(user,
database,
password);
MongoClientURI uri = new MongoClientURI("mongodb://"+user+":"
+String.valueOf(password)
+"@localhost/?authSource="+database);
try{
// To connect to mongodb server
MongoClient mongoClient = new MongoClient( uri);
// Now connect to your databases
MongoDatabase db = mongoClient.getDatabase("VsJogger");
System.out.println("Connect to database successfully");
MongoCollection coll = db.getCollection("Jog");
MongoCursor<Document> cursor = coll.find().iterator();
int i = 1;
while (cursor.hasNext()) {
System.out.println("Inserted Document: "+i);
System.out.println(cursor.next());
i++;
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
然后输出。
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)
【问题讨论】:
标签: java mongodb virtual-machine database