您当前的位置: 首页 >  mongodb

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MongoDB——索引属性之唯一索引(Unique Indexes)

小志的博客 发布时间:2022-05-04 16:05:30 ,浏览量:0

目录
    • 一、MongoDB官网地址
    • 二、唯一索引(Unique Indexes)的概述
    • 三、唯一索引(Unique Indexes)的示例
      • 3.1、示例1:没有创建唯一索引,执行2次相同数据的新增操作
      • 3.2、示例2:创建唯一索引,执行2次相同数据的新增操作
      • 3.3、示例3:复合索引支持唯一性约束
      • 3.4、示例4:多键索引支持唯一性约束

一、MongoDB官网地址
  • MongoDB官网地址:https://www.mongodb.com/docs/manual/core/index-single/
二、唯一索引(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]})
    

    在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0543s