MongoDB学习(五)

游标

通俗的说,游标不是查询结果,可以理解为数据在遍历过程中的内部指针,其返回的是一个资源,或者说数据读取接口。

客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制查询得到的结果数量、跳过部分结果、或对结果集按任意键进行排序等。

直接对一个集合调用find()方法时,我们会发现,如果查询结果超过二十条,只会返回二十条的结果,这是因为Mongodb会自动递归find() 返回的游标。

当我们使用一个变量来保存 find()的返回值时,其将不会自动进行遍历显示查询结果的操作,并没有真正的去查询数据库,只要当用到的时候(也就是遍历游标的时候)才会到数据库中将数据取出来。

cursor.hasNext():判断游标是否到尽头

cursor.next():取出游标的下一个单位

比如查到10000行,跳过100页,取10行.一般地,我们假设每页N行, 当前是page页,就需要跳过前 (page-1)*N 行, 再取N行。在mongo中,用skip(), limit()函数来实现的,当获得游标后,我们可以先对游标进行处理后,再让访问数据库的动作按照我们的意愿发生。在这里我们就可以使用limit,skip,sort三个函数来处理游标。同时这三个函数可以组成方法链式调用的形式。

limit:限制游标返回的数量,指定了上限

skip:忽略前面的部分文档,如果文档总数量小于忽略的数量,则返回空集合

sort:得到的子集合进行排序,可以按照多个键进行正反排序

索引

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

MongoDB的索引类型:

Single Field(单键索引)索引创建在单个字段上

Compound Index(复合索引)将多个键组合到一起创建索引。该方式称为复合索引,或者也叫组合索引

Multikey Index(多键值索引)多键值索引就是在array上面建立一个索引,mongodb会将array的每一个数字进行排序

Text Indexes(全文索引)全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式

Hashed Indexes(哈希索引)速度比普通索引快,但是,不能对范围查询进行优化。

唯一索引,可以确保集合中的每一个文档指定的键都有唯一值而符合唯一索引则可以单个键值相同,但是多个键值的组合值必须唯一。

稀疏索引,会跳过所有不包含被索引键的文档。这个索引之所以称为 "稀疏" 是因为它并不包括集合中的所有文档。

TTL索引(time to live index) 具有生命周期的索引,这种索引允许为每个文档设置一个过期时间,当超过指定时间后,集合自动清除超时的文档用来保存一些诸如session会话信息的时候非常有用,或者存储缓存数据使用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419G0G56U00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券