前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB的引用哲学 --- 游标

MongoDB的引用哲学 --- 游标

作者头像
Jean
修改2018-10-14 20:59:43
1.4K0
修改2018-10-14 20:59:43
举报
文章被收录于专栏:Web行业观察Web行业观察

(1)游标介绍

如果我们查询的数据量比较大会怎样?

我们首先插入10000条数据,因为mongodb底层是javascript引擎,所以我们

可以使用js的语法来插入数据:

代码语言:javascript
复制
for(var i=0;i<10000;i++){
    db.bar.insert({_id:i+1,title:'helloWorld',content:'aaa'+i});
};

效果:

我们查询一下,确实是插入进去了:

事实上在日常的业务中,很少有一次性取10000条数据的,但是有时候

从数据库取出来的数据是跨数据的,比如取第100页的数据。我们查询

的时候不想一次性取出那么多数据,想进行逐条处理,这个时候我们就

需要使用“游标(cursor)”来解决。

什么是“游标”?

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

这个接口,可以逐条读取数据。

就类似java中的读取流一样,使用包装类的readLine()方法一行一行去读。

(2)游标使用语法

声明游标:

var cursor=db.collectionName.find({filed:value,...});

find的查询结果赋值给了游标cursor变量。

我们获取我们刚刚插入的10000条数据的游标对象(条件是_id<=5),然后分别打

印所有数据的信息:

其中next()方法就是取出下一个数据。printjson就是以json格式打印出数据。

同样也可以使用js的while语法来循环打印刚刚的数据:

当然也可以使用for循环来打印:

还有一个比较常用的方法,叫“forEach”,每一个forEach里面有一个

回调函数,这个函数中的obj对象就是游标指向的数据集的每一个数据。

这个方法给了我们很大的自由度,可以在回调函数中做一些我们想做的操作。

(3)游标在数据库的应用

游标在分页时如何使用?

例如查询到10000行,跳过100页,取10行。

一般的,我们假设每页N行,当前是page页,就需要跳过(page-1)*N行,

再取N行。在Mysql中,我们可以使用limit offset,N来实现。

在mongodb中,使用skip(),limit()函数来实现。

我们取出我们10000条数据的第9996-10000条的数据,可以使用skip()

函数来实现:

可以使用limit限制取出的数据条数,

我们查询第801页,每页10条:

同理,也可以在查询的时候使用分页方法:

如果我们不想迭代打印,想直接把结果以数组的形式打印出来,

使用游标的toArray()方法:

想取出某一个,使用数组的下标即可:

这里要提醒大家的是,如果查询少量的数据,可以使用toArray方法,

查询大量的数据不建议使用toArray方法,因为toArray方法会把所有

的行立即以对象的形式组织在内存里,十分耗费内存,可以在取出少

量几行时,使用此功能。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)游标介绍
    • 如果我们查询的数据量比较大会怎样?
      • 什么是“游标”?
      • (2)游标使用语法
        • 声明游标:
        • (3)游标在数据库的应用
          • 游标在分页时如何使用?
            • 函数来实现:
              • 使用游标的toArray()方法:
              相关产品与服务
              云数据库 MongoDB
              腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档