mongodb AggregationOutput list.iterator() 无限循环的问题
2015-09-13 20:47
561 查看
在mongodb中将获取到的聚集进行遍历的时候进入无限循环,代码:
下边这句代码始终为真:
或者采用foreach()循环,进行:
@Override public Object getLogwayList() { Iterable<DBObject> list= pageAnaDao.getLogwayList().results(); while(list.iterator().hasNext()){ DBObject result = list.iterator().next(); String id = result.get("_id").toString(); Iterable<DBObject> listCount = (Iterable<DBObject>) result.get("counts"); while(listCount.iterator().hasNext()){ DBObject resultOne = listCount.iterator().next(); } } }
下边这句代码始终为真:
list.iterator().hasNext()而下边这句一直返回到第一个元素:
DBObject result = list.iterator().next();所以导致的结果就是不断遍历第一个元素,进入无限循环。正确的方式:
@Override public Object getLogwayList() { Iterable<DBObject> list= pageAnaDao.getLogwayList().results(); Iterator<DBObject> iterator= list.iterator(); List<LogWay> results = new ArrayList<LogWay>(); while(iterator.hasNext()){ DBObject result = iterator.next(); String id = result.get("_id").toString(); Iterable<DBObject> listCount = (Iterable<DBObject>) result.get("counts"); Iterator<DBObject> iteratorCount= listCount.iterator(); while(iteratorCount.hasNext()){ DBObject resultOne = iteratorCount.next(); } }
或者采用foreach()循环,进行:
for (DBObject obj : output.results()) { String id = obj.get("_id"); int times = Integer.parseInt(obj.get("times").toString()); System.out.println("ID IS "+id+" time: "+times); }
相关文章推荐
- MongoDB学习之在Windows下安装MongoDB
- MongoDB学习之在Linux下安装MongoDB
- MongoDB高级查询[聚合Group]
- Mongodb新增的聚合方法及其Java客户端
- java操作mongodb(聚合函数)-分组找出每组的最大值
- MongoDB简单概述
- MongoDB学习笔记<两>
- MongoDB中添加管理员和普通用户以及认证的方法
- MongoDB学习笔记
- mongodb学习一 关于 下载 安装 以及增删改查 还有一些简单的命令
- MongoDB MapReduce速度提升20倍的优化宝典
- mongodb 聚合详解
- MongoDB Spring实现(聚合查询)
- mongodb副本集群搭建
- 如何配置 MongoDB 副本集
- 结合MongoDB开发LBS应用
- MongoDB删除字段和部分字段查询
- Mongodb数据 导入导出数据 导出工具mongoexport和导入工具mongoimport介绍
- MongoDB整合Spring 详细讲解(含代码)
- mongodb对日期范围查询