0

我正在使用 MongoDB 开始一个项目。我有我的数据库:

mongo=null;
    try {
        mongo = new Mongo();
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MongoException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    db = mongo.getDB( "mydb" );
    System.out.print(db.getName());//just a test

我想显示特定集合的所有元素(在 scrollPane 中,但这对问题并不重要)。该集合最初不存在,因为数据库“mydb”为空。这是我的代码:

        DBCursor cur = db.getCollection("newcollection").find();//collection should be created at this point, if it doesnt exist.


        while(cur.hasNext()) { //<----exception caused here
            //do something with cursor...
        }

即使最初集合是空的,在进一步使用应用程序元素时也会添加,所以我需要从应用程序启动时开始搜索它以填充我的 scrollPane。

这是堆栈跟踪:

        java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException:     Connection refused: connect
at com.mongodb.DBPort._open(DBPort.java:222)
    at com.mongodb.DBPort.go(DBPort.java:111)
at com.mongodb.DBPort.call(DBPort.java:78)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:217)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:313)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:298)
at com.mongodb.DBCursor._check(DBCursor.java:369)
at com.mongodb.DBCursor._hasNext(DBCursor.java:492)
at com.mongodb.DBCursor.hasNext(DBCursor.java:517)
at MainFrame$MyPanel.<init>(MainFrame.java:120)//<----cur.hasNext()

任何想法我做错了什么?

4

2 回答 2

2

My feeling here is that you DB is not running at all. Could you try to connect to the DB from command line using "mongo" and validate it is up and running?

于 2012-06-21T16:54:18.527 回答
0

您可以在打印之前检查该集合是否存在

db.collectionExists("coll_name")

如果不是,你可以创建它,或者确保一些索引 - 它会自动创建它我通常在 spring 启动时执行这样的操作(例如 @PostConstruct )

于 2012-06-21T16:49:24.760 回答