您的位置:首页 > 数据库 > Mongodb

第五课 MongoDB 数据查询(二)

2015-09-06 14:04 501 查看
1.课程大纲
   


   
本课程继续讲解 MongoDB 数据查询相关的内容,包括MongoDB的游标、模糊查询以及findAndModify函数的使用。
          1.MongoDB 的游标
          2.模糊查询
          3.findAndModify 函数的使用

2.课程简介
      
首先来讲解MongoDB 的查询结果返回过程,回顾一下在上次课介绍 find 函数时所讲的内容,在上次课介绍文档查询函数 find 时提到,它的返回值是一个 cursor 游标对象。在实际的 JavaScript 脚本中,使用的是 cursor 变量来保存 find 函数返回的结果,然后使用 printjson 来打印 cursor 变量中的所有文档。  
       其实当我们使用 find 函数进行文档查询时,MongoDB 并不是一次返回结果集中的所有文档,而是以多条文档的形式分批来返回查询结果,返回的文档会缓存到内存中,每次返回的数据量不会超过4MB。 find 函数的返回值是一个cursor 游标,默认情况下,第一次它会返回结果集的前 101 个文档,或 1 MB 的数据,这取决于哪个条件先满足,如果 101 个文档的数据量大于1MB的话,那么返回的文档数目将小于101个;之后,每当缓存的文档被全部迭代完后 cursor 游标会向继续向数据库请求数据,从第二批次开始,每次最多可以返回 4 MB 的文档,直到将结果集中的文档全部输出。
 
       为了更好的说明上述数据查询过程,下面通过一个动画来模拟一下。这里表示的是数据库服务,客户端使用find函数发出查询请求,我们假设 find 函数返回的查询结果一共有十条文档,这十条结果将分批来返回,假设每一次返回5条文档。第一批次find函数返回的五条文档会缓存到内存中,cursor 游标变量会指向第一条文档,这时,我们就可以使用cursor变量来操作结果集了,可以迭代输出缓存的文档。 当遍历完最后一条文档后,cursor 游标会自动向数据库服务发送一个 getMore 的数据请求,然后对返回的结果再次进行迭代输出,如此反复,直到结果集中的所有文档都完全输出。 
       这种批量返回结果的好处是,一方面它可以减少客户端对服务器连接次数,从而减轻服务器的查询负担,另一方面当查询的结果集很大的时候,这种批量返回结果的方式可以减少客户端的延迟,提高数据的处理效率。  
       需要说明的是,如果要在一个没有建立索引的字段上进行排序操作的话,在返回结果之前,数据库服务需要将满足查询条件的所有文档都加载到内存中来进行排序。如果结果集很大时,会严重的消耗内存资源。所以对文档中经常使用的字段建立索引,不仅可以提高文档的查询速度,而且可以减少对内存占用。

3.详细课程视频
   视频课程链接如下:[MongoDB 数据查询(二)] 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb