MongoDB——索引属性之唯一索引(Unique Indexes)
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB——索引属性之唯一索引(Unique Indexes)相关的知识,希望对你有一定的参考价值。
目录
一、MongoDB官网地址
二、唯一索引(Unique Indexes)的概述
- 在现实场景中,唯一性是很常见的一种索引约束需求,重复的数据记录会带来许多处理上的麻烦,比如订单的编号、用户的登录名等。通过建立唯一性索引,可以保证集合中文档的指定字段拥有唯一值。
- 唯一性索引对于文档中缺失的字段,会使用null值代替,因此不允许存在多个文档缺失索引字段的情况。
- 对于分片的集合,唯一性约束必须匹配分片规则。换句话说,为了保证全局的唯一性,分片键必须作为唯一性索引的前缀字段。
三、唯一索引(Unique Indexes)的示例
3.1、示例1:没有创建唯一索引,执行2次相同数据的新增操作
-
在values集合中新增文档数据
db.values.insert(name:"张三")
-
再次在values集合中新增相同的文档数据
db.values.insert(name:"张三")
-
因为没有创建唯一索引,因此2次新增操作成功。
db.getCollection('values').find()
3.2、示例2:创建唯一索引,执行2次相同数据的新增操作
-
先删除values集合
db.values.drop()
-
在values集合中新增文档数据
db.values.insert(name:"张三")
-
在values集合中创建唯一索引
db.values.createIndex(name:1,unique:true)
-
再次在values集合中新增相同的文档数据,由结果可知,报错:不能重复插入数据
db.values.insert(name:"张三")
3.3、示例3:复合索引支持唯一性约束
-
先删除values集合
db.values.drop()
-
在values集合中新增文档数据如下:
db.values.insert(title:"java",type:"技术")
-
在values集合中创建复合索引支持唯一性约束
db.values.createIndex(title:1,type:1,unique:true)
-
再次在values集合中新增相同的文档数据,由结果可知,报错:不能插入数据
db.values.insert(title:"java",type:"技术")
3.4、示例4:多键索引支持唯一性约束
-
先删除values集合
db.values.drop()
-
在values集合中新增文档数据如下:
db.values.insert(score:[98,80,67,88])
-
在values集合中创建多键索引支持唯一性约束
db.values.createIndex(score:1,unique:true)
-
再次在values集合中新增相同的文档数据,由结果可知,报错:不能插入数据
db.values.insert(score:[98,80,67,88])
-
再次在values集合中新增部分相同的文档数据,由结果可知,报错:不能插入数据
db.values.insert(score:[80])
-
再次在values集合中新增部分相同部分不相同的文档数据,由结果可知,报错:不能插入数据
db.values.insert(score:[80,50])
以上是关于MongoDB——索引属性之唯一索引(Unique Indexes)的主要内容,如果未能解决你的问题,请参考以下文章