java mongo save超时_java - MongoDB-find()调用有时会卡住-超时 - 堆栈内存溢出

另一种方法是将建议的方法用于MongoDB 3.2驱动程序。 请记住,您必须将.jar库更新(如果尚未更新)到最新版本。

public final MongoClient connectToClient(String hostName, String port) {

try {

MongoClient client = new MongoClient(hostName, Integer.valueOf(port));

return client;

} catch(MongoClientException e) {

System.err.println("Cannot connect to Client.");

return null;

}

}

public final MongoDatabase connectToDB(String databaseName) {

try {

MongoDatabase db = client.getDatabase(databaseName);

return db;

} catch(Exception e) {

System.err.println("Error in connecting to database " + databaseName);

return null;

}

public final void closeConnection(MongoClient client) {

client.close();

}

public final void findDoc(MongoDatabase db, String collectionName) {

MongoCollection collection = db.getCollection(collectionName);

try {

FindIterable iterable = collection

.find(new Document("_id", key));

Document doc = iterable.first();

//For an Int64 field named 'special_id'

long specialId = doc.getLong("special_id");

} catch(MongoException e) {

System.err.println("Error in retrieving document.");

} catch(NullPointerException e) {

System.err.println("Document with _id " + key + " does not exist.");

}

}

public final void insertToDB(MongoDatabase db, String collectioName) {

try {

db.getCollection(collectionName).insertOne(new Document()

.append("special_id", 5)

//Append anything

);

catch(MongoException e) {

System.err.println("Error in inserting new document.");

}

}

public final void updateDoc(MongoDatabase db, String collectionName, long id) {

MongoCollection collection = db.getCollection(collectionName);

try {

collection.updateOne(new Document("_id", id),

new Document("$set",

new Document("special_id",

7)));

catch(MongoException e) {

System.err.println("Error in updating new document.");

}

}

public static void main(String[] args) {

String hostName = "myHost";

String port = "myPort";

String databaseName = "myDB";

String collectionName = "myCollection";

MongoClient client = connectToClient(hostName, port);

if(client != null) {

MongoDatabase db = connectToDB(databaseName);

if(db != null) {

findDoc(db, collectionName);

}

client.closeConnection();

}

}

编辑 :正如其他建议一样,从命令行检查通过其ID查找文档的过程是否也很慢。 那么也许这是您的硬盘驱动器有问题。 应该对_id进行索引,但是无论好坏,请在_id字段上重新创建索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值