MongoDB(15)- 查询操作里面的游标 cursor
db.collection.find() 方法里面的游标
- 该方法最后会返回一个 cursor
- 正常情况下,访问文档必须迭代游标
重点事项
- 当调用 find() 函数时,Shell 并不立即查询数据库,而是等真正开始获取结果时才发送查询请求
- 游标对象的每个方法几乎都会返回游标对象本身,这样可以方便进行链式函数的调用
- 在 MongoDB Shell 中使用游标输出文档包含两种情况,如果不将 find() 函数返回的游标赋值给一个局部变量进行保存,在默认情况下游标会自动迭代 20 次。如果将 find() 函数返回的游标赋值给一个局部变量,则可以使用游标对象提供的函数进行手动迭代。
- 使用清空后的游标,进行迭代输出时,显示的内容为空
- 游标从创建到被销毁的整个过程存在的时间,被称为游标的生命周期,包括游标的创建、使用及销毁三个阶段。当客户端使用 find() 函数向服务器端发起一次查询请求时,会在服务器端创建一个游标,然后就可以使用游标函数来操作查询结果
迭代循环游标
直接调用变量
var myCursor = db.users.find( { type: 2 } );
myCursor

使用 cursor 的 next() 方法
var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {
print(tojson(myCursor.next()));
}

使用 printjson() 代替 print() 方法
var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {
printjson(myCursor.next());
}

使用 cursor 的 forEach() 方法
var myCursor = db.users.find( { type: 2 } );
myCursor.forEach(printjson);

使用 pretty() 直接打印
这不香吗,为什么要用游标还写代码,搞不懂搞不懂
> db.inventory.find({item : /^p/}).pretty()

常见的游标方法名
| 方法名 | 作用 |
|---|---|
| hasNext | 判断是否有更多的文档 |
| next | 用来获取下一条文档 |
| toArray | 将查询结构放到数组中 |
| count | 查询的结果为文档的总数量 |
| limit | 限制查询结果返回数量 |
| skip | 跳过指定数目的文档 |
| sort | 对查询结果进行排序 |
| objsLeftlnBatch | 查看当前批次剩余的未被迭代的文档数量 |
| addOption | 为游标设置辅助选项,修改游标的默认行为 |
| hint | 为查询强制使用指定索引 |
| explain | 用于获取查询执行过程报告 |
| snapshot | 对查询结果使用快照 |
(后面会对常用的游标方法进行详解)
以下三种情况会让游标被销毁
- 客户端保存的游标变量不在作用域内。
- 游标遍历完成后,或者客户端主动发送终止消息
- 在服务器端 10 分钟内未对游标进行操作
MongoDB(15)- 查询操作里面的游标 cursor的更多相关文章
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- MongoDB的查询操作
1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们 ...
- MongoDB Java API操作很全的整理
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...
- Mongodb基础用法及查询操作[转载]
插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...
- Mongodb基础用法及查询操作
插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...
- MongoDB源码分析——mongod数据查询操作
源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. ...
- MongoDB(9)- 文档查询操作之 find() 的简单入门
find() MongoDB 中查询文档使用 find() find() 方法以非结构化的方式来显示所要查询的文档 语法格式 db.collection.find(query, projection) ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- MongoDB入门---文档查询操作之条件查询&and查询&or查询
经过前几天的学习之路,今天终于到了重头戏了.那就是文档查询操作.话不多说哈,直接看下语法: db.collection.find(query, projection) query :可选,使用查询操作 ...
随机推荐
- 项目去O实践
现状(自下而上) 1.Oracle数据库,表,序列,存储过程,视图 2.ibatis框架,映射xml中的sql语句 3.应用中通过指定字符串的形式获取查询结果 目标 1.置换数据库为PG数据库,迁 ...
- etcd raft 处理流程图系列2-transport
本章给出了raftexample中使用的传输层代码,补全了上一节中传输层与raft节点(raft server和channel server)的交互细节.下图中流程的核心在于传输层中的streamRt ...
- Android性能优化——性能优化的难题总结
前言 现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一名Android ...
- python,ctf笔记随笔
一.在centos虚拟机中安装pyhton3环境: 安装pip3:yum install python36-pip 将pip升级到最新版本:pip3 install --upgrade pip 运行p ...
- 面试官:你的App卡顿过吗?你是如何监控的?
一.故事开始 面试官:平时开发中有遇到卡顿问题吗?你一般是如何监控的? 来面试的小伙:额...没有遇到过卡顿问题,我平时写的代码质量比较高,不会出现卡顿. 面试官:... 这回答似乎没啥问题,但是如果 ...
- 说实话,Android开发月薪3W,谁不酸呢?
近期有个网友在某匿名区晒字节跳动Offfer,毕业一年月薪3W,引发众多读者羡慕,纷纷留言酸了.酸了.但进大厂的要求还是蛮高的,需要在技术实力上有一定的积累,今天给大家分享一份高质量笔记, 助力大家技 ...
- Linux虚拟机配置SSH免密登录
本环境为CentOS 7(点击镜像下载iso文件),无图界面. 启动SSH服务 在/usr/sbin/有一个文件为sshd,然后输入绝对路径/usr/sbin/sshd即可开启ssh服务. 然后输入命 ...
- Compile Java Codes in Linux Shell instead of Ant Script
The following is frequently used ant script, compile some java source codes with a libary path, then ...
- shell趣味实验——图形
目录 一.直线 二.矩形 2.1.镂空矩形 三.直角三角形 3.1.倒直角三角形 3.2.反直角三角形 3.3.等腰三角形 3.4.倒等腰三角形 3.5.菱形 四.平行四边形 五.梯形 5.1.等腰梯 ...
- 【笔记】初探KNN算法(2)
KNN算法(2) 机器学习算法封装 scikit-learn中的机器学习算法封装 在python chame中将算法写好 import numpy as np from math import sqr ...