美文网首页mongoDB
MongoDB之文档游标

MongoDB之文档游标

作者: AbstractCulture | 来源:发表于2020-09-15 15:11 被阅读0次

    游标

    • 查询操作返回的结果游标
    • 游标的迭代与操作

    db.collecton.find() 返回一个文档集合游标,在不迭代游标的情况下,只列出前20个文档;
    个人理解,游标就是一个迭代器,里面存放了多个文档信息.

    • 生命周期
      游标会在遍历完所有文档后或者10分钟后关闭
      可以使用noCursorTimeout()函数来保持游标一直有效,开发中如果使用,记得主动关闭游标
    var cursor = db.accounts.find().noCursorTimeout();
    cursor.close();
    
    • 查看游标结构
    var cursor = db.accounts.find();
    cursor
    
    • 使用游标下标直接访问文档集合中的某一个文档
    var cursor = db.accounts.find();
    cursor[0]
    
    • 游标函数
    method 描述
    hasNext 判断是否存在未游历到的文档,返回值为boolean
    next 读取下一个文档集合中的文档
    forEach 遍历,学过java的都懂,这里我只能说懂得都懂
    limit 截断,传入一个数值,limit(5)就是只返回5条,limit(0)就是返回所有信息
    skip 跳过游标中的前n个文档,skip(5)就是跳过前5条
    count 统计游标中的文档数量,count中可以传入一个参数applySkipLimit。
    语法结构为: count<applySkipLimit>
    默认情况下,applySkipLimit为false,即count不会考虑skip和limit的限制条件.
    不提供筛选条件的情况下,MongoDB会从Metadata中取得结果
    当数据库分布式结构较为复杂的时候,此函数的结果可能是不准确的,考虑使用聚合管道
    sort 对游标中的文档进行排序,语法结构:sort(<document>)
    document为排序的要求:{ field: ordering },其中1为ASC,-1为DESC
    • 使用迭代器遍历游标中的文档
    var cursor = db.accounts.find();
    while ( cursor.hasNext() ){
        var data = cursor.next();
        printjson(data);
    }
    
    • 使用forEach遍历游标中的文档
    var cursor = db.accounts.find();
    cursor.forEach(printjson);
    
    • 读取游标中第0条到第10条的文档信息
    var cursor = db.accounts.find();
    cursor.limit(10);
    
    • 读取游标中第10条到第5条的文档信息
    var cursor = db.accounts.find();
    cursor.skip(10).limit(5);
    
    • 统计游标中的文档数量
    var cursor = db.accounts.find().skip(5).limit(5);
    cursor.count(true);
    
    • 查询游标中的文档信息,按name为ASC,balance为DESC的排序进行返回
    db.accounts.find( {balance: { $exists: true} } ).sort( {  balance: -1,name: 1 } );
    
    • 查询游标中balance最大的文档信息
    db.accounts.find( {balance: { $exists: true} } ).sort( { balance: -1} ).limit(1);
    
    • 测试函数执行顺序,这里我们可以看到,执行顺序为 sort>skip>limit
    db.accounts.find( {balance: { $exists: true} } ).limit(1).sort( { balance: -1} ).skip(1);
    

    相关文章

      网友评论

        本文标题:MongoDB之文档游标

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