mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数
1首先介绍查询结果 返回的过程:
进行查询的时候mongodb 并不是一次哪个返回结果集合的所有文档,而是以多条文档的形式分批返回查询的结果,返回文档到内存中。
好处:
- 减少了客户端与服务器端的查询负担。
- 查询的结果集合很大的时候批量返回数据,提高了效率。
注意事项
- 如果执行查询的时候不使用 var keyword 则查询的结果会自动迭代 20次。
- cursor 游标第一次返回101条文档或者4兆 数据(谁先满足)。
- 不活跃的游标会在10分钟内自动关闭,或者客户端主动关闭游标,如果让游标一致有效果 可以使用 cursor.noCursorTimeout() 实例 var myCursor = db.inventory.find().noCursorTimeout(); 然后必须主动关闭游标 cursor.close() 或者迭代完毕,否则一致消耗系统资源。
- 驱动或者命令行调用find操作的时候并不会立即查询数据,而是等到真正开始获取数据的时候(hasnext)才发送查询的请求。
- db.**.find().sort({age:1}).limit(2).skip(10) 执行时候跟顺序无关。
- 游标对象每个方法返回都是游标,方便进行链式调用。
接下来比较重要的一点:游标快照
mongodb 在整个生命周期中没有隔离性,当查询结果集很大且在查询的结果集上进行更新操作的时候,可能会返回多次同一个文档。游标可能会返回那些因为体积变大而被移动到集合的末尾的文档,因为MMAPv1 存储引擎(3.2版本的存储引擎已经变为:WiredTiger), 解决方法是对查询进行快照,db.**.find().snapshot(); 使用快照之后查询会在_id索引上执行遍历的操作,保证每一个文档只被返回一次,保证结果的一致性。但是会使查询变慢。
下面介绍一下 mongodb 的存储引擎:
mmapv1存储引擎的分配策略:如果一个文档更新操作查过了文档在磁盘的预先分配的空间,mongodb 会在磁盘上分配一块更大的空间,缺点是:如果集合中有很多索引的话 会花费较多的时间,3.0版本修改了默认的分配策略改为:2的N次方分配策略。有利于减少系统的碎片数量
减少移动的频次,提高了写效率。
mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数的更多相关文章
- Oracle学习笔记_07_模糊查询
附录:参考资料 1.Oracle sql语言模糊查询--like后面的通配符 2.oracle sql语言模糊查询--通配符like的使用教程
- mongodb3.2系统性学习——4、find()操作
find 操作语法展示: find()操作实例 : //连接数据库 dbService = connect("localhost:27017"); //选择插入集合 db = db ...
- mongodb3.2系统性学习——3、update()操作
mongodb 包含众多的原子性操作: 实例: //连接数据库 dbService = connect("localhost:27017"); //选择插入集合 db = dbS ...
- mongodb3.2系统性学习——2、write concern mongodb 写安全机制
为了尊重作者原文章位置:http://kyfxbl.iteye.com/blog/1952941 首先讲一下mongodb 的写操作过程: mongodb有一个write concern的设置,作用是 ...
- Java数据库学习之模糊查询(like )
Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...
- [原创]java WEB学习笔记23:MVC案例完整实践(part 4)---模糊查询的设计与实现
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- mysql学习2:模糊匹配查询like,regexp,in
mysql模糊匹配查询like,regexp,in 摘要 内容比较简单,无摘要. 关键词 模糊查询 like regexp in contact 正文 下图是示例用到的数据表信息 ...
- Bootstrap-table学习笔记(二)——前后端分页模糊查询
在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下,顺便做个总结: 1,前端分页 2,后端分页 3,模糊查询 前端分页相当简单,在我添加了2w条测试数据的时候打开的很流畅,没有卡顿. ...
- 零基础学习java------36---------xml,MyBatis,入门程序,CURD练习(#{}和${}区别,模糊查询,添加本地约束文件) 全局配置文件中常用属性 动态Sql(掌握)
一. xml 1. 文档的声明 2. 文档的约束,规定了当前文件中有的标签(属性),并且规定了标签层级关系 其叫html文档而言,语法要求更严格,标签成对出现(不是的话会报错) 3. 作用:数据格式 ...
随机推荐
- JBPM数据库表说明
http://blog.163.com/tigerlion@126/blog/static/167675665201072642627400/ 最近这几天一直在研究JBPM工作流引擎,以下为JBMP的 ...
- Nginx/Apache图片缩略图技术
1,目的 2,使用方式 3,Nginx + Linux 缩略图实现 3.1,原理 3.2,nginx配置实现 3.3,例子 4,Apache + Windows缩略图实现 4.1,环境 4.2,原理 ...
- linux 配置 Apache mysql php最新版
第一部分:安装mysql 官方下载 mysql5.6.19 64位的rpm格式文件 0.rpm 四个mysql5.6.19 卸载默认的mysql yum -y remove mysql-libs-* ...
- 《c和指针》1.5编程练习问题
<c和指针>1.5编程练习问题 #include<stdio.h>#include<stdlib.h>#include<string.h>#define ...
- IT牛人博客
IT牛人博客,参见:http://blog.csdn.net/freebird_lb/article/details/8210276 团队技术博客 淘宝UED淘宝用户体验团队 淘宝核心系统淘宝核心系统 ...
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
网上找到一种更好的实现方式: (1)把N个数放到容器A(int数组)中. (2)从N个数中随机取出1个数放入容器B(int数组)中. (3)把容器A中最后一个数与随机抽取的数对调 或者 把容器A中最后 ...
- 一个react的完整项目展示
和一些人的关系像平行线,一辈子相守相望,见于眼底藏于心间.就怕耐不住寂寞,冲动而成了相交线,在一个点尽情拥抱,从此便离得越来越远,再也不见.遇到这样的人,因为不想做恋人只能一时,所以才选择做朋友能一世 ...
- MySQL(5.6) 函数
字符串函数 ASCII(str) 说明:返回字符串 str 最左边字符的 ASCII 值 mysql'); mysql); mysql> SELECT ASCII('a'); mysql> ...
- 实现输出h264直播流的rtmp服务器 flash直播服务器
http://www.cnblogs.com/haibindev/archive/2012/04/16/2450989.html 实现输出h264直播流的rtmp服务器 RTMP(Real Time ...
- 学习笔记_过滤器应用_1(分ip统计网站的访问次数)
分ip统计网站的访问次数 ip count 192.168.1.111 2 192.168.1.112 59 统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做 ...