zoukankan      html  css  js  c++  java
  • 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" }
  • 相关阅读:
    原来是板子的硬件问题
    最简单的helloworld模块编译加载(linux3.5内核源码树建立)
    排序学习笔记
    配置开发环境遇到的一些问题及解决方法
    .NET基础之GridView控件
    .NET之页面数据缓存
    .NET基础之Calendar控件
    【转帖】DIV+CSS完美兼容IE6/IE7/FF的通用方法
    ADO.NET()Command
    .NET基础之DataList控件
  • 原文地址:https://www.cnblogs.com/xiangys0134/p/8169234.html
Copyright © 2011-2022 走看看