【MongoDB学习笔记25】MongoDB的索引类型

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

创建索引可以指定一些选项,使用不同的选项建立的索引会有不同的行为。

 

一、唯一索引

唯一索引可以确保每一个文档的指定键都有唯一的值。例如,想确定文档中的username键不重复,创建一个唯一索引:

1
2
3
4
5
6
7
8
> db. users .findOne()  
{  
     "_id"  : ObjectId( "54ad5826245d1b7d58b53238" ),  
     "i"  : 2,  
     "username"  "user2" ,  
     "age"  : 39,  
     "created"  : ISODate( "2015-01-07T16:00:38.634Z" )  
}
1
2
3
4
5
6
7
> db. users .ensureIndex({ "username" :1},{ "unique" : true })   
{    
     "createdCollectionAutomatically"  false ,    
     "numIndexesBefore"  : 1,    
     "numIndexesAfter"  : 2,    
     "ok"  : 1    
}

   

1
2
3
4
5
6
7
8
9
> db. users .insert({ "username" : "user2" })    
WriteResult({    
     "nInserted"  : 0,    
     "writeError"  : {    
         "code"  : 11000,    
         "errmsg"  "insertDocument :: caused by :: 11000 E11000 duplicate key error index: blog.users.$username_1  dup key: { : \"user2\" }"    
     }    
})    
>

可以看出创建唯一索引后,就不能插入相同的键值;

1.唯一复合索引

创建唯一复合索引,复合索引的单键值可以重复,但是组成唯一复合索引的组合键值只能唯一。例如:

如果有一个{“username”:”user2”,”age”:18}有唯一的索引,下面的插入是合法的,

1
2
3
>db. users .insert({“username”:”bob”})
>db. users .insert({“username”:”bob”,”age”:23})
>db. users .insert({“username”:”fred”,”age”:23})

如果再次插入这三项中的任意一个,会导致键重复异常;

2.去重复

对于已经有重复值的字段上创建唯一索引,会引起错误;可以使用dropDups选项遇到重复值会保留第一个,删除其他重复项;

1
>db. users .ensureIndex({“username”:1},{“unique”: true ,”dropDups”: true })

慎用这个选项,因为根本没有办法控制删除哪些文档;

 

二、稀疏索引

如果有一个可能存在也有可能不存在的字段,在此字段上创建的索引称为稀疏索引。

创建唯一稀疏索引:

1
>db. users .ensureIndex({“username”:1},{“unique”: true ,”sparse”: true })

创建非唯一稀疏索引:

1
>db. users .ensureIndex({“username”:1},{”sparse”: true })



本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1601478,如需转载请自行联系原作者
相关文章
|
8月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引知识概述
本文介绍MongoDB索引相关知识,包括其在查询中的重要作用。索引可避免全集合扫描,显著提升查询效率,尤其在处理海量数据时。通过B树数据结构存储字段值并排序,支持相等匹配、范围查询及排序操作。文中还提供了官方文档链接以供深入学习。
142 0
|
8月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引的类型
本节介绍了MongoDB中索引的几种类型及其特点。包括单字段索引,支持升序/降序排序,索引顺序对操作无影响;复合索引,字段顺序重要,可实现多级排序;地理空间索引,支持平面与球面几何查询;文本索引,用于字符串搜索并存储词根;哈希索引,基于字段值散列,适合等值匹配但不支持范围查询。
209 1
微服务——MongoDB常用命令——MongoDB索引的类型
|
8月前
|
存储 NoSQL 定位技术
MongoDB索引知识
MongoDB索引是提升查询性能的关键工具,通过构建特殊的数据结构(如B树)优化数据访问路径。无索引时,查询需全集合扫描,时间复杂度为O(n);使用索引后可降至O(log n),实现毫秒级响应。MongoDB支持多种索引类型:单字段索引适用于高频单字段查询;复合索引基于最左前缀原则优化多条件过滤和排序;专业索引包括地理空间索引(支持LBS服务)、文本索引(全文搜索)和哈希索引(分片键优化)。合理选择和优化索引类型,可显著提升数据库性能。建议使用explain()分析查询计划,并定期清理冗余索引。
|
存储 NoSQL 关系型数据库
MongoDB索引知识
MongoDB索引知识
111 1
MongoDB索引知识
|
存储 NoSQL MongoDB
MongoDB 索引限制
10月更文挑战第22天
198 2
|
NoSQL MongoDB 索引
MongoDB 高级索引
10月更文挑战第22天
98 2
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
122 1
|
4月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
4月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
406 79
|
4月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
263 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉

推荐镜像

更多