一、概述
MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以理解为索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口。
二、索引的使用
1、单索引 》db.users.ensure({fileName:1}) //fileName字段名称;1正序排列;-1倒序排列。
2、复合索引 》db.users.ensure({fileName1:1,fileName2:-1}) //对fileName1和2创建索引;查询时同时使用1和2或者单独使用1,索引生效,否则无效。
3、唯一索引 》db.users.ensure({"fileName":1},{"unique":true}) //指定unique为true
4、稀疏索引 》 db.users.ensure({"fileName":1},{"unique":true "sparse":true}) //unique不是必须的
单索引
MongoDB在创建集合时会自动为自动为字段_id生成索引。这是一个特殊索引,它不能被删除。该_id索引强制它的关键字都是唯一的(除了分片环境下的一些情景)。_id值是恒定不变的。
复合索引
建立在多个字段上的索引。在查询时有多个排序方向或者查询条件中有多个健,这个索引就很有用,使用的时候一定要注意和创建索引的顺序一样(前n个顺序组合)。例如创建一个索引db.users.ensure({"username":1,"age":1}),查询时单独使用username是有效的
(单独使用age无效)。