mongodb笔记03--游标

游标(cursor):

        通俗的说,游标不是查询结果,我们可以理解为数据在遍历过程中的内部指针,其返回的是一个资源,或者说数据读取接口。就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件。客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制查询得到的结果数量、跳过部分结果、或对结果集按任意键进行排序等!

        直接对一个集合调用find()方法时,我们会发现,如果查询结果超过二十条,只会返回二十条的结果。之所以每次显示20条只不过是mongo shell为了提高用户界面可读性而将其限制为20条。在应用程序使用驱动进行交互的时候不会有这个问题。当然你也可以修改这个20的数值。在shell下面输入:

        DBQuery.shellBatchSize = 50

        就会显示50条一次

声明游标:

        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());

        }

用for来循环游标

        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());}

forEach(回调函数)

        游标还有一个迭代函数,允许我们自定义回调函数来逐个处理每个单元.

        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行

        如var mytcursor = db.bar.find().skip(9000).limit(10);

        则是查询第901页,每页10条

转数组:

        通过cursor一次性得到所有数据, 并返回数组.

        var cursor = db.goods.find();

        printjson(cursor.toArray());//看到所有行

        printjson(cursor.toArray()[2]);  //看到第2行

        注意:不要随意使用toArray() 。会把所有的行立即以对象形式组织在内存里。可以取出少数几行时再用此功能.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文档的一般操作(增删查改CRUD) MongoDB自2.6版本起就积极保持文档中的field的相对顺序,而更新某个...
    我看不见阅读 9,058评论 0 3
  • 一、基本概念解释 二、MongoDB 数据类型 下表为MongoDB中常用的几种数据类型。 ObjectId类似唯...
    为技术疯狂阅读 4,300评论 0 0
  • Mongodb中find()函数返回一个游标,客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制...
    幸福镰刀阅读 4,813评论 0 0
  • 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输入help可以看到基本...
    精气神贯通阅读 3,294评论 0 0
  • 我们总希望在爱里面不受伤害,可是却又一次又一次的喜欢上Mr.Wrong,明知道最后会遍体鳞伤心力交瘁,仍那么的义...
    木子想说阅读 1,108评论 0 0

友情链接更多精彩内容