MongoDB游标操作(4)
游标是什么?
通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.
通过这个接口,你可以逐条读取.
声明游标:
var cursor = db.collectioName.find(query,projection);
cursor.hasNext() ,判断游标是否已经取到尽头
cursor. next() , 取出游标的下1个单元
用while来循环游标
> var mycursor = db.bar.find({_id:{$lte:5}})
> while(mycursor.hasNext()) {
... printjson(mycursor.next());
... }
例:
// 声明游标
var cursor = db.goods.find();
// 循环游标
for(var doc=true;cursor.hasNext();) { printjson(cursor.next());}
也可以简写:
for(var cursor=db.goods.find(), doc=true;cursor.hasNext();) { printjson(cursor.next());}
游标还有一个迭代函数,允许我们自定义回调函数来逐个处理每个单元.
cursor.forEach(回调函数);
例:
> var gettitle = function(obj) {print(obj.goods_name)}
> var cursor = db.goods.find();
> cursor.forEach(gettitle);
游标在分页中的应用
比如查到10000行,跳过100页,取10行.
一般地,我们假设每页N行, 当前是page页
就需要跳过前 (page-1)*N 行, 再取N行, 在mysql中, limit offset,N来实现
在mongo中,用skip(), limit()函数来实现的
如 var mycursor = db.bar.find().skip(9995);
则是查询结果中,跳过前9995行
查询第901页,每页10条
var mycursor = db.bar.find().skip((pageNum-1)*pageSize).limit(pageSize)
则是 var mytcursor = db.bar.find().skip(9000).limit(10);
通过cursor一次性得到所有数据, 并返回数组.
例:
>var cursor = db.goods.find();
> printjson(cursor.toArray()); //看到所有行
> printjson(cursor.toArray()[2]); //看到第2行
注意: 不要随意使用toArray()
原因: 会把所有的行立即以对象形式组织在内存里.
可以在取出少数几行时,用此功能.
MongoDB游标操作(4)相关推荐
- MongoDB数据库操作---mongoose操作
Mongoose认知概念 Mongoose是MongoDB的一个对象模型工具,其可以在一部环境下执行.同时它也是针对MongoDB操作的一个队形模型库,封装了MongoDB对文档的一些增删改查等常用方 ...
- 在分片集群中追踪MongoDB的操作日志
2019独角兽企业重金招聘Python工程师标准>>> 介绍 可追踪游标,特别是追踪MongoDB的操作日志是MongoDB中拥有多种用途.非常受欢迎的特色,例如向数据库发送一个有关 ...
- MongoDB——查询操作详解
查询语法 db.collection_name.find (query, //查询条件projection //可选,指定需要返回的字段:默认返回所有字段 ) 查询集合所有文档 可以在find()后调 ...
- MongoDB相关操作
连接MongoDB 本地连接: mongo 远程连接方法: mongo ip:port/dbname -u 用户名 -p 密码 查看所有数据库 show dbs 查看所有集合 show tables ...
- MongoDB 数据操作(四)数据删除
来源:我的博客站 OceanicKang |<MongoDB 数据操作(四)数据删除> 上一篇:<MongoDB 数据操作(三)数据更新(2)修改器> 在 MongoDB 中删 ...
- MongoDB简单操作
MongoDB简单操作 Hadoop核心技术厂商Cloudera将在2014/06推出hadoop Ecosystem与MongoDB的整合产品,届时MongoDB与ipmala及hbase,hive ...
- MongoDB 聚合操作
MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...
- PHP操作mongodb数据库操作类
最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...
- MongoDB分布式操作——分片操作
http://www.2cto.com/database/201309/240552.html MongoDB分布式操作--分片操作 描述: 像其它分布式数据库一样,MongoDB同样支持分布式操作, ...
最新文章
- 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
- QT_QSlider的总结
- Micropython教程之TPYBoard开发板DIY智能温控小风扇(萝卜学科编程教育)
- 1008 N的阶乘 mod P ——51Nod(同余定理)
- cad lisp 画四边形_多年经验总结CAD技巧6
- thinkphp自定义标签库
- glassfish_RIP GlassFish –感谢所有的鱼。
- JDBC Driver
- keras遥感图像Unet语义分割(支持多波段多类)
- Python个人总结(基础+进阶)
- 1006 换个格式输出整数——C++实现
- 阿里云RDS数据库与自建数据库做主从同步
- 微服务时代之2017年五军之战:Net PHP谁先死
- linux风扇转速,ubuntu系统调节GPU风扇转速
- 文科计算机课程,高校文科生要学专业计算机课程
- kmeans算法c语言实现,能对不同维度的数据进行聚类
- 03 Linux安装Git
- 希斯·莱杰获奥斯卡最佳男配角奖
- 感动的文章(天使每个blog都有这篇文章yo)
- Aescripts Bang for mac(AE三维枪口火焰特效插件)
热门文章
- 2018.12.24-bzoj-2565-最长双回文串
- iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画
- 《循序渐进Linux》第二版即将出版发行(附封面)
- IT部门不应忽略的12种数据
- WLAN 无线网络 02 - 频率、信道、编码、调制
- 「译」javascript 中的 delete
- SQL高手篇:精典SQL FAQ收藏
- C#:把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
- mysql5.1事件调度器
- 《Ray Tracing in One Weekend》——Chapter 6: Antialiasing