目录
一、MongoDB官网地址
- 一、MongoDB官网地址
- 二、唯一索引(Unique Indexes)的概述
- 三、唯一索引(Unique Indexes)的示例
- 3.1、示例1:没有创建唯一索引,执行2次相同数据的新增操作
- 3.2、示例2:创建唯一索引,执行2次相同数据的新增操作
- 3.3、示例3:复合索引支持唯一性约束
- 3.4、示例4:多键索引支持唯一性约束
- MongoDB官网地址:https://www.mongodb.com/docs/manual/core/index-single/
- 在现实场景中,唯一性是很常见的一种索引约束需求,重复的数据记录会带来许多处理上的麻烦,比如订单的编号、用户的登录名等。通过建立唯一性索引,可以保证集合中文档的指定字段拥有唯一值。
- 唯一性索引对于文档中缺失的字段,会使用null值代替,因此不允许存在多个文档缺失索引字段的情况。
- 对于分片的集合,唯一性约束必须匹配分片规则。换句话说,为了保证全局的唯一性,分片键必须作为唯一性索引的前缀字段。
-
在values集合中新增文档数据
db.values.insert({name:"张三"})
-
再次在values集合中新增相同的文档数据
db.values.insert({name:"张三"})
-
因为没有创建唯一索引,因此2次新增操作成功。
db.getCollection('values').find({})
-
先删除values集合
db.values.drop()
-
在values集合中新增文档数据
db.values.insert({name:"张三"})
-
在values集合中创建唯一索引
db.values.createIndex({name:1},{unique:true})
-
再次在values集合中新增相同的文档数据,由结果可知,报错:不能重复插入数据
db.values.insert({name:"张三"})
-
先删除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:"技术"})
-
先删除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]})