如何使用Mongo-Java API 3在MongoCursor上设置取消超时

时间:2015-10-17 03:37:15

标签: java mongodb

我正在尝试在执行find()查询时设置QUERYOPTION_NOTIMEOUT标志。 该标志将覆盖MongoCursor上的默认10分钟超时。

根据Documentation find()应该返回一个DBCursor:

DBCursor cursor = collection.find(query);

然后我可以做

cursor.addOption(Bytes.QUERYOPTION_NOTIMEOUT);

但是find()实际上返回了没有addOption()方法的FindIterableImpl /。

以下是上下文的整个方法:

public static MongoCursor getSomethingFromDB(String something) {
    MongoCollection collection = getCollectionForClass(BlogPost.class);
    return collection.find(and(exists("a", false), eq("other", something))).iterator();
}

1 个答案:

答案 0 :(得分:7)

在mongo-java驱动程序的第3版上执行此操作的方法是:

collection.find(and(exists("a", false), eq("other", lang))).noCursorTimeout(true).iterator();

显然

cursor.addOption(Bytes.QUERYOPTION_NOTIMEOUT);

来自V2 API,V3文档已过时