博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
由DBCursor的“can't switch cursor access methods”异常引发的思考
阅读量:4329 次
发布时间:2019-06-06

本文共 1099 字,大约阅读时间需要 3 分钟。

先谈谈我是怎么用的:

DBCollection dbcollection =  XXXXXXXXXX();  //连接mongo        DBCursor dbCursor = mergeVideoDB.find(XXXX);  //根据name查出若干个         if (dbCursor.length() == 1) {            return videoinfos;        }        while(dbcursor。hasNext()){    // 这一步产生错误,报出DBCursor的“can't switch cursor access methods”           XXXXXX;      } 以上!

首先在使用hasNext方法后需要先通过 _checkType() 检查 cursor 类型。 

1 void _checkType( CursorType type ){ 2         if ( _cursorType == null ){ 3             _cursorType = type; 4             return; 5         } 6  7         if ( type == _cursorType ) 8             return; 9 10         throw new IllegalArgumentException( "can't switch cursor access methods" );11     }

回过头来看,  DBCursor dbCursor = mergeVideoDB.find(XXXX); //根据name查出若干个  

此时,DBCursor的type为 null

if (dbCursor.length() == 1) {            return videoinfos;        }

在执行完上述步骤后,DBCursor的type变为了array

所以在使用hasNext方法时会报出

"can't switch cursor access methods" 解决思路: 1.不要在之前使用会更改其type的方法进行操作; 2.使用除hasNext之外的其他遍历方法进行遍历
直接使用foreach方法进行遍历即可:
for (DBObject dbObject:dbCursor){}。
 
 

转载于:https://www.cnblogs.com/hanhaotian/p/9729606.html

你可能感兴趣的文章
Windows之IOCP
查看>>
机器学习降维之主成分分析
查看>>
CTP2交易所成交回报
查看>>
WebSocket & websockets
查看>>
openssl 升级
查看>>
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
ARPA
查看>>
JSP开发模式
查看>>
我的Android进阶之旅------>Android嵌入图像InsetDrawable的使用方法
查看>>
Detours信息泄漏漏洞
查看>>
win32使用拖放文件
查看>>
Android 动态显示和隐藏软键盘
查看>>