• 7、MongoDB学习之游标


    1、cursor(游标)是什么?

    通俗的说,游标不是查询结果,而是查询的返回资源,或者接口
    通过这个接口,你可以逐条读取
    就像php中的fopen打开文件,得到一个资源一样,通过资源,可以一行一行的读文件
     
    2、声明游标
    语法:
    var cursor = db.collectioName.find(query,projection);
    curosr.hasNext()    判断游标是否已经取到尽头
    cursor.next()    取出游标的下一个单元
     
    3、用while循环打印游标
    > var mycursor = db.stu.find({sn:{$lte:100}})
    > while (mycursor.hasNext()) {
    ... printjson(mycursor.next());
    ... }
     
    4、游标还有一个迭代函数,允许我们自定义回调函数来逐个处理每个单元
    cursor.forEach(回调函数)
    > var cursor = db.stu.find({sn:{$lte:20}});
    > cursor.forEach(printjson);
     
    5、游标在分页中的应用
    比如查到10000行,跳过100页,取10行
    一般地,假设我们每页N行,当前是page页
    就需要跳过前(page-1)*N行,再取N行,在mysql中,limit offset,N来实现
    在mongodb中,用skip(),limit()函数来实现
    > db.stu.find().skip(90).limit(5)
    { "_id" : ObjectId("5a10750aaf4c824abd7f0209"), "sn" : 91, "name" : "student91" }
    { "_id" : ObjectId("5a10750aaf4c824abd7f020a"), "sn" : 92, "name" : "student92" }
    { "_id" : ObjectId("5a10750aaf4c824abd7f020b"), "sn" : 93, "name" : "student93" }
    { "_id" : ObjectId("5a10750aaf4c824abd7f020c"), "sn" : 94, "name" : "student94" }
    { "_id" : ObjectId("5a10750aaf4c824abd7f020d"), "sn" : 95, "name" : "student95" }
  • 相关阅读:
    static、final、this、super关键
    细节二:参数、引用类型、实例化
    枚举类型
    单例模式
    细节一:字符串、switch、默认值、数组
    类属性和类方法
    装饰器模式
    TreeSet
    可见参数和增强for以及自动拆装箱
    静态导入
  • 原文地址:https://www.cnblogs.com/xiangys0134/p/8169234.html
Copyright © 2020-2023  润新知