使用java在MongoDB集合中插入文档时出错

时间:2012-07-03 17:10:03

标签: java mongodb document

将文档插入mongodb集合时出现以下错误

Jul 3, 2012 10:27:31 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: Exception determining maxBSONObjectSize 
java.io.EOFException
    at org.bson.io.Bits.readFully(Bits.java:48)
    at org.bson.io.Bits.readFully(Bits.java:33)
    at org.bson.io.Bits.readFully(Bits.java:28)
    at com.mongodb.Response.<init>(Response.java:40)
    at com.mongodb.DBPort.go(DBPort.java:127)
    at com.mongodb.DBPort.go(DBPort.java:92)
    at com.mongodb.DBPort.findOne(DBPort.java:145)
    at com.mongodb.DBPort.runCommand(DBPort.java:156)
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:467)
    at com.mongodb.Mongo.getMaxBsonObjectSize(Mongo.java:574)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:241)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:211)
    at com.mongodb.DBCollection.insert(DBCollection.java:57)
    at com.mongodb.DBCollection.insert(DBCollection.java:102)
    at DBOperations.addDocument(DBOperations.java:54)
    at MongoBook.main(MongoBook.java:28)
Jul 3, 2012 10:27:39 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: Exception determining maxBSONObjectSize 
java.io.EOFException
    at org.bson.io.Bits.readFully(Bits.java:48)
    at org.bson.io.Bits.readFully(Bits.java:33)
    at org.bson.io.Bits.readFully(Bits.java:28)
    at com.mongodb.Response.<init>(Response.java:40)
    at com.mongodb.DBPort.go(DBPort.java:127)
    at com.mongodb.DBPort.go(DBPort.java:92)
    at com.mongodb.DBPort.findOne(DBPort.java:145)
    at com.mongodb.DBPort.runCommand(DBPort.java:156)
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:467)
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:446)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:145)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:137)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:261)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:211)
    at com.mongodb.DBCollection.insert(DBCollection.java:57)
    at com.mongodb.DBCollection.insert(DBCollection.java:102)
    at DBOperations.addDocument(DBOperations.java:54)
    at MongoBook.main(MongoBook.java:28)

我的计划如下:

MongoBook类

import com.mongodb.BasicDBObject;
public class MongoBook
{
    public static void main(String []str)
    {
        DBOperations dbops = null;

        try
        {
            dbops = new DBOperations("localhost", 28017);
            BasicDBObject d1 = new BasicDBObject();
            d1.put("Name", "Malhar Vora");
            d1.put("Address", "224, Bhatiya Colony");
            d1.put("Phone", "9429007086");


            dbops.addDocument(d1);
        }
        catch(Exception e)
        {
            System.out.println("Error occured");
        }

    }
}

DBOperations Class

import java.net.UnknownHostException;
import java.util.ArrayList;

import com.mongodb.Mongo;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;

class DBOperations
{
    private String hostUrl; // To store host url of Database Server
    private int port; // To store port no of Database Server
    private Mongo mongo = null; 
    private DB db = null;
    private DBCollection collContacts = null;

    public DBOperations(String host,int port) throws UnknownHostException
    {
        this.hostUrl = host;
        this.port = port;   
        mongo = new Mongo(host, port);
        db = mongo.getDB("ContactDB");
        collContacts = db.getCollection("Contacts");
    }

    // Method to get host url no for database server
    public String getHostUrl() {
        return hostUrl;
    }

    // Method to set host url no for database server 
    public void setHostUrl(String hosturl) {
        this.hostUrl = hosturl;
    }

    // Method to get port no for database server 
    public int getPort() {
        return port;
    }

    //Method to set port no for database server 
    public void setPort(int port) {
        this.port = port;
    }    

    // Method to add document to collection
    public void addDocument(BasicDBObject doc)
    {
        if (doc!=null)
        {
            this.collContacts.insert(doc);  

        }
    }

    //Method to retrieve all documents with specific criteria
    public ArrayList<BasicDBObject> getDocuments(BasicDBObject dbfind)
    {
       ArrayList<BasicDBObject> docList = new ArrayList<BasicDBObject>();
       DBCursor cur = this.collContacts.find(dbfind);

       while(cur.hasNext())
       {
           docList.add((BasicDBObject) cur.next());
       }
       return docList;
    }

}

我是MongoDB的新手。 有人能告诉我为什么会出现这种错误,解决方案是什么?

1 个答案:

答案 0 :(得分:1)

将您连接的端口号从28017更改为27017.即,更改为:

new DBOperations("localhost", 27017);

27017是mongod侦听的默认端口。另一方面,28017是管理员Web控制台侦听的默认端口。