游标是什么?

通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.

通过这个接口,你可以逐条读取.

声明游标:

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)相关推荐

  1. MongoDB数据库操作---mongoose操作

    Mongoose认知概念 Mongoose是MongoDB的一个对象模型工具,其可以在一部环境下执行.同时它也是针对MongoDB操作的一个队形模型库,封装了MongoDB对文档的一些增删改查等常用方 ...

  2. 在分片集群中追踪MongoDB的操作日志

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 可追踪游标,特别是追踪MongoDB的操作日志是MongoDB中拥有多种用途.非常受欢迎的特色,例如向数据库发送一个有关 ...

  3. MongoDB——查询操作详解

    查询语法 db.collection_name.find (query, //查询条件projection //可选,指定需要返回的字段:默认返回所有字段 ) 查询集合所有文档 可以在find()后调 ...

  4. MongoDB相关操作

    连接MongoDB 本地连接: mongo 远程连接方法: mongo ip:port/dbname -u 用户名 -p 密码 查看所有数据库 show dbs 查看所有集合 show tables ...

  5. MongoDB 数据操作(四)数据删除

    来源:我的博客站 OceanicKang |<MongoDB 数据操作(四)数据删除> 上一篇:<MongoDB 数据操作(三)数据更新(2)修改器> 在 MongoDB 中删 ...

  6. MongoDB简单操作

    MongoDB简单操作 Hadoop核心技术厂商Cloudera将在2014/06推出hadoop Ecosystem与MongoDB的整合产品,届时MongoDB与ipmala及hbase,hive ...

  7. MongoDB 聚合操作

    MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...

  8. PHP操作mongodb数据库操作类

    最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...

  9. MongoDB分布式操作——分片操作

    http://www.2cto.com/database/201309/240552.html MongoDB分布式操作--分片操作 描述: 像其它分布式数据库一样,MongoDB同样支持分布式操作, ...

最新文章

  1. 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
  2. QT_QSlider的总结
  3. Micropython教程之TPYBoard开发板DIY智能温控小风扇(萝卜学科编程教育)
  4. 1008 N的阶乘 mod P ——51Nod(同余定理)
  5. cad lisp 画四边形_多年经验总结CAD技巧6
  6. thinkphp自定义标签库
  7. glassfish_RIP GlassFish –感谢所有的鱼。
  8. JDBC Driver
  9. keras遥感图像Unet语义分割(支持多波段多类)
  10. Python个人总结(基础+进阶)
  11. 1006 换个格式输出整数——C++实现
  12. 阿里云RDS数据库与自建数据库做主从同步
  13. 微服务时代之2017年五军之战:Net PHP谁先死
  14. linux风扇转速,ubuntu系统调节GPU风扇转速
  15. 文科计算机课程,高校文科生要学专业计算机课程
  16. kmeans算法c语言实现,能对不同维度的数据进行聚类
  17. 03 Linux安装Git
  18. 希斯·莱杰获奥斯卡最佳男配角奖
  19. 感动的文章(天使每个blog都有这篇文章yo)
  20. Aescripts Bang for mac(AE三维枪口火焰特效插件)

热门文章

  1. 2018.12.24-bzoj-2565-最长双回文串
  2. iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画
  3. 《循序渐进Linux》第二版即将出版发行(附封面)
  4. IT部门不应忽略的12种数据
  5. WLAN 无线网络 02 - 频率、信道、编码、调制
  6. 「译」javascript 中的 delete
  7. SQL高手篇:精典SQL FAQ收藏
  8. C#:把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
  9. mysql5.1事件调度器
  10. 《Ray Tracing in One Weekend》——Chapter 6: Antialiasing