查询mongoDB集合数据更新,数据有400w多。我一次用cursor(游标)取1w,处理更新。程序在某段时间运行中遍历游标时发生异常!
DBCursor cursor = tabColl.find(queryObj).skip(startRow).limit(pageSize);
完整异常信息:
com.mongodb.MongoExceptionCursorNotFound:cursornotfoundonserveratcom.mongodb.DBApiLayerCursorNotFound:cursornotfoundonserveratcom.mongodb.DBApiLayerResult.init(DBApiLayer.java:379)
        at com.mongodb.DBApiLayerResult.advance(DBApiLayer.java:426)atcom.mongodb.DBApiLayerResult.advance(DBApiLayer.java:426)atcom.mongodb.DBApiLayerResult.hasNext(DBApiLayer.java:408)
        at com.mongodb.DBCursor._hasNext(DBCursor.java:495)
        at com.mongodb.DBCursor.hasNext(DBCursor.java:515)
        at com.bsdwwd.boss.util.deal.UpdateTUserMongoByInfo.deal(UpdateTUserMongoByInfo.java:106)
        at com.bsdwwd.boss.util.deal.UpdateTUserMongoByInfo.detailDeal(UpdateTUserMongoByInfo.java:53)
        at com.bsdwwd.boss.util.process.AbstractProcess.run(AbstractProcess.java:181)
        at java.lang.Thread.run(Thread.java:662)
 
 
原因是取到的cursor对象默认是有时间限制的,时间过后cursor就没有了(我猜想应该被mongoDB后台程序回收了)
 
解决方法:
     在获取到cursor对象后设置下
     cursor.addOption(Bytes.QUERYOPTION_NOTIMEOUT);//默认游标打开有时间限制,设置成无时间限制
 
 
注意:
     cursor使用完毕后,一定要关闭(游标最后都是这样,规范操作)。搞不定会出现什么诡异的错误!

MongoDB ,cursor not found异常的更多相关文章

  1. 【pymongo】mongodb cursor id not valid error

    参考来源: http://stackoverflow.com/questions/10298354/mongodb-cursor-id-not-valid-error http://stackover ...

  2. mongoDB: cursor not found on server

    查询mongoDB集合数据更新,数据有400w多.我一次用cursor(游标)取1w,处理更新.程序在某段时间运行中遍历游标时发生异常! DBCursor cursor = tabColl.find( ...

  3. mongodb cursor用法

    为了营造大批量数据,我们可以这样写javascript脚本 for (var i=1;i<=10000;i++) { if(i%2==1) { db.cursortest.insert({_id ...

  4. MongoDB 执行mongoexport时异常及分析(关于数字类型的查询)

    今天在用mongoexport导出满足一定条件下的数据时,遇到了一个报错,现纪录下来,并且针对此错误对MongoDB 的 数字类型 做了进一步的学习. 背景 及 报错信息 今天接到一个业务需求,需要从 ...

  5. mongodb 建立索引提示异常:WiredTigerIndex::insert: key too large to index, failing 1483

    { "ok" : 0.0, "errmsg" : "WiredTigerIndex::insert: key too large to index, ...

  6. Linux下MongoDB非正常关闭启动异常解决方法

    1.将配置信息写入一个文件中 vim mongo.conf 里面写如下内容: dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/lo ...

  7. 由DBCursor的“can't switch cursor access methods”异常引发的思考

    先谈谈我是怎么用的: DBCollection dbcollection = XXXXXXXXXX(); //连接mongo DBCursor dbCursor = mergeVideoDB.find ...

  8. 从PHP客户端看MongoDB通信协议(转)

    MongoDB 的 PHP 客户端有一个 MongoCursor 类,它是用于获取一次查询结果集的句柄(或者叫游标),这个简单的取数据操作,内部实现其实不是那么简单.本文就通过对 MongoCurso ...

  9. 【MongoDB数据库】怎样安装、配置MongoDB

    本blog以最简洁的方式记录了博主在折腾MongoDB过程中点点滴滴,当中包含下载MongoDB.配置环境变量.怎样启动MongoDBserver.怎样连接MongoDBserver以及怎样连接Mon ...

随机推荐

  1. html5式程序员表白

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/whqet/article/details/26394493 前端开发whqet,csdn,王海庆,w ...

  2. Docker实战(二)之操作Docker容器

    容器是Docker的另外一个核心概念.简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统系统(包括内核,应 ...

  3. lua连接redis集群

    连接redis集群需要用到llua-resty-redis-cluster模块 github地址:https://github.com/cuiweixie/lua-resty-redis-cluste ...

  4. Android分享到微信和朋友圈的工具类

    1.只要填写上正确的app_id,且引用上该工具类你就能实现分享到朋友圈和分享到微信. 2.需要到微信平台下载jar包,以及注册一个appid import android.content.Conte ...

  5. Android检查手机上是否安装了第三方软件的方法------本文以百度地图为例

    package com.example.myapi.thirdbaidumap; import java.net.URISyntaxException; import java.util.ArrayL ...

  6. LNMP搭建 源码包

    LNMP源码包搭建 linux    CentOS-6.5-x86_64-bin-DVD1 nginx   版本1.8.0  下载地址:http://nginx.org/en/download.htm ...

  7. form表单,submit,ajax提交

    尼玛... 一个简单的表单提交,竟然给我整的直郁闷. 本来就是个保存功能,几个前人都用的ajax提交,我也就没改成submit.然后坑爹的就来了. 我在表单里写了个<form></f ...

  8. 深入解析Java中的装箱和拆箱

    自己主动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最主要的东西,再来看一以下试笔试中常常遇到的与装箱.拆箱相关的问题. 下面是本 ...

  9. 【LeetCode92】Reverse Linked List II★★

    题目描述: 解题思路: 题目大意:给定一个链表,反转第m到第n个结点部分,m.n满足1 ≤ m ≤ n ≤ length of list. 解题思路参照LeetCode206题,用迭代法,不过要注意以 ...

  10. Android APK 签名比对(转)

    Android apk签名的过程 1. 生成MANIFEST.MF文件: 程序遍历update.apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个生成SHA1的数字签名信息,再用Ba ...