微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mongoDB:游标notimeout设置在java客户端中不起作用

我在java中为dbcursor设置了’notimeout’选项:

    BasicDBObject nearbyQueries = new BasicDBObject("$gt", 0)
            .append("$lte", 2);
    DBCursor trueClassInstances = locationsCollection.find(new BasicDBObject("distanceFromHotel", nearbyQueries)).addOption(Bytes.QUERYOPTION_NOTIMEOUT).limit(100000);
    double counter = 0;
    int currentPresent = 0;
    for (DBObject instance : trueClassInstances) {

        ...
    }

即使我设置了此选项,也会抛出此异常:

Exception in thread "main" com.mongodb.MongoCursorNotFoundException: Query Failed with error code -5 and error message 'Cursor 1876954464377 not found on server XXXXXX:27017' on server XXXXXXXX:27017
    at com.mongodb.connection.GetMoreProtocol.receiveMessage(GetMoreProtocol.java:115)
    at com.mongodb.connection.GetMoreProtocol.execute(GetMoreProtocol.java:68)
    at com.mongodb.connection.GetMoreProtocol.execute(GetMoreProtocol.java:37)
    at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:155)
    at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:219)
    at com.mongodb.connection.DefaultServerConnection.getMore(DefaultServerConnection.java:194)
    at com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:197)
    at com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:93)
    at com.mongodb.MongoBatchCursorAdapter.hasNext(MongoBatchCursorAdapter.java:46)
    at com.mongodb.DBCursor.hasNext(DBCursor.java:152)
    at locationExtraction.distanceClassification.FeatureAnalyzer.main(FeatureAnalyzer.java:27)

FeatureAnalyzer.java:27是for循环行.

此问题出现在具有类似设置的其他项目中…

我究竟做错了什么?也许我选择’for’循环而不是这种迭代会导致这种奇怪的行为?

while(cursor.hasNext())
{
      DBObject next = cursor.next();
}

谢谢

解决方法:

看起来您无法在时间限制内处理每个批次.尝试减少批量大小,以便在时间用完之前消耗每批次.这应该有所帮助.

cursor.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT).batchSize(100)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐