当前位置:Gxlcms > 数据库问题 > mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数

mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数

时间:2021-07-01 10:21:17 帮助过:20人阅读

  • 驱动或者命令行调用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函数

    标签:

    人气教程排行