美文网首页
Mongodb学习笔记(四)之 游标操作

Mongodb学习笔记(四)之 游标操作

作者: 我的小鱼干去哪儿了 | 来源:发表于2019-01-14 22:13 被阅读0次

    游标操作 cursor

    (1)游标是什么?通俗来说,游标不是查询结果,而是查询的返回资源或接口。
    (2)通过这个接口可以逐行读取。就像php的fopen打开文件,得到一个资源一样,通过资源,可以一行一行读取文件。

    操作游标

    1. 声明游标
    var mycursor = db.bar.find({_id:{lte:5}})
    
    1. 判断游标是否已取到尽头
    mycursor.hasNext()
    
    1. 取出游标的下一个单元
     mycursor.next()
    
    1. 循环游标
    for (; mycursor.hasNext(); ) {print(mycursor.next())}
    
    1. 通过cursor一次性取得所有数据并返回数组
    printjson(mycursor.toArray())
    printjson(cursor.toArray()[2]) // 打印第3行数据
    

    注意: 不要使用printjson
    原因: 会把所有的行立即以对象形式立即存储到内存里
    可以在取出少数几行时,用此功能

    6.迭代函数
    允许我们自定义回调函数来逐个处理每个单元
    cursor.forEach(回调函数):

    var getTitle = function(obj) {print(obj.goods_name)};
    var cursor = db.goods.find();
    cursor.forEach(getTitle);
    

    7.游标在分页中的使用
    比如查到10000行,跳过100页,取10行
    一般的,我们假设每页N行,当前是page页,就需要跳过前(page-1) * N 行,再取N行出来.
    在mysql中,我们需要用limit offset N来实现
    在mongo中,我们需要用skip(), limit()函数来实现

    (1)查询结果中,跳过前9995行

    var mycursor = db.bar.find().skip(9995)
    mycursor.forEach(function(obj){printjson(obj)})
    

    (2) 查询第901页,每页10条

    var mycursor = db.bar.find().skip(9000).limit(10)
    

    相关文章

      网友评论

          本文标题:Mongodb学习笔记(四)之 游标操作

          本文链接:https://www.haomeiwen.com/subject/ljhsdqtx.html