我使用 mongo-java-driver 3.1.0。JAVA和MongoDB连接没有问题。我可以使用 JAVA 从 MongoDB 获取数据并将数据写入 MongoDB。
但是当我尝试写入更多数据时,我的 java 控制台出现了这个错误。我认为当套接字连接持续超过 30 秒时,MongoDB 客户端会崩溃。直到 30 秒,部分数据被插入到 MongoDB (myCollection) 首先我得到;
com.mongodb.MongoSocketReadException:过早到达流的末尾
接着
com.mongodb.MongoTimeoutException:在等待与 ReadPreferenceServerSelector{readPreference=primary} 匹配的服务器时,在 30000 毫秒后超时
我没有设置任何超时,所以它的超时应该是无限的。
有人可以帮忙吗
public void writeDB() {
MongoClient mongoClient = new MongoClient ("127.0.0.1", 27017);
mongoClient.setWriteConcern(WriteConcern.JOURNALED);
DB database = mongoClient.getDB("myCollection");
BasicDBObject newDataObject = new BasicDBObject();
DBCollection collection = database.getCollection("myCollection");
int number = 0;
for (int i = 0; i <= 1000000; i++) {
if(CHECKDATA_EXIST) {
int randomCount = (10 + (Math.random() * 300));
for (int j = 0; j < randomCount; j++) {
number = i + randomCount;
}
newDataObject.put("_id", i);
newDataObject.put("myNumber", number);
collection.insert(newDataObject);
}
}
}
顺便说一句,在粉碎之后我无法再写入或获取任何数据。要写入数据,我必须重新启动“mongod”。
我为 if case 添加了 CHECKDATA_EXIST 方法(我的代码包括该方法)。我忘了补充。该方法检查 id 是否存在。