我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB unique index

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB unique index

MongoDB unique index

MongoDB unique index


实战


Part1:写在最前

MongoDB的 unique index索引这里有个注意事项,主要体现在对NULL值的处理上,本文加以复现。



整体环境:

MongoDB 3.2.5


Part2:集合内容

PRIMARY> db.helei.find()
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcef5"), "i" : 0, "username" : "user0", "age" : 8, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcef6"), "i" : 1, "username" : "user1", "age" : 9, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcef7"), "i" : 2, "username" : "user2", "age" : 82, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcef8"), "i" : 3, "username" : "user3", "age" : 48, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcef9"), "i" : 4, "username" : "user4", "age" : 27, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcefa"), "i" : 5, "username" : "user5", "age" : 53, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcefb"), "i" : 6, "username" : "user6", "age" : 42, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcefc"), "i" : 7, "username" : "user7", "age" : 56, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcefd"), "i" : 8, "username" : "user8", "age" : 5, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b7ea9544e98b24a5bdcefe"), "i" : 9, "username" : "user9", "age" : 56, "created" : "Thu Mar 02 2017 17:49:09 GMT+0800 (CST)" }
{ "_id" : ObjectId("58b8da80d8509e8f46fd9042"), "i" : "10", "age" : 50, "create" : ISODate("2017-03-03T02:52:48.834Z") }


这里可以看到,我在helei集合中生成了i从0到10这些数据,而i:10文档中我故意漏写username这一个键值


Part3:集合索引情况

PRIMARY> db.helei.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "helei.helei"
},
{
"v" : 1,
"key" : {
"age" : 1
},
"name" : "idx_age",
"ns" : "helei.helei"
},
{
"v" : 1,
"unique" : true,
"key" : {
"username" : 1
},
"name" : "uk_username",
"ns" : "helei.helei",
"background" : true
}
]


这里可以看出在name列添加了unique index: uk_username



Part4:验证

当再有一个不包含username键值的文档被插入时,会抛出错误

PRIMARY> db.helei.insert({i:"11",age:51,create:new Date()})

WriteResult({

"nInserted" : 0,

"writeError" : {

"code" : 11000,

"errmsg" : "E11000 duplicate key error collection: helei.helei index: uk_username dup key: { : null }"

}

})


Warning:警

如果一个文档没有对应的键,索引会将其作为null存储。



——总结——

如果对某个键建立了唯一索引,但插入了多个缺少该索引键的文档,由于集合已经存在一个该索引键值的值为null而导致插入失败。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB unique index

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中key 、primary key 、unique key 与index区别【转】

一、key与primary key区别CREATE TABLE wh_logrecord (logrecord_id int(11) NOT NULL auto_increment,user_name varchar(100) default NULL,ope
mysql中key 、primary key 、unique key 与index区别【转】
2015-04-04

ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are not allowed on table “string̶

文档解释ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are not allowed on table string.stringCause: An
ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are not allowed on table “string̶
2023-11-04

ORA-26026: unique index string.string initially in unusable state ORACLE 报错 故障修复 远程处理

文档解释ORA-26026: unique index string.string initially in unusable stateCause: A unique index is in IU state (a unique
ORA-26026: unique index string.string initially in unusable state ORACLE 报错 故障修复 远程处理
2023-11-05

ORA-26027: unique index string.string partition string initially in unusable state ORACLE 报错 故障修复 远程

文档解释ORA-26027: unique index string.string partition string initially in unusable stateCause: A partition of a unique
ORA-26027: unique index string.string partition string initially in unusable state ORACLE 报错 故障修复 远程
2023-11-05

ORA-02439: Unique index on a deferrable constraint is not allowed ORACLE 报错 故障修复 远程处理

文档解释ORA-02439: Unique index on a deferrable constraint is not allowedCause: attempted to enable a deferrable primary
ORA-02439: Unique index on a deferrable constraint is not allowed ORACLE 报错 故障修复 远程处理
2023-11-05

ORA-14063: Unusable index exists on unique/primary constraint key ORACLE 报错 故障修复 远程处理

文档解释ORA-14063: Unusable index exists on unique/primary constraint keyCause: User attempted to add or enable a primary
ORA-14063: Unusable index exists on unique/primary constraint key ORACLE 报错 故障修复 远程处理
2023-11-05

ORA-01715: UNIQUE may not be used with a cluster index ORACLE 报错 故障修复 远程处理

文档解释ORA-01715: UNIQUE may not be used with a cluster indexCause: An attempt was made to create a cluster index with the
ORA-01715: UNIQUE may not be used with a cluster index ORACLE 报错 故障修复 远程处理
2023-11-04

mysql中unique的作用

mysql 中的 unique 关键字创建唯一索引,强制表中特定列或列组的值必须唯一,防止重复,并提高查询速度、避免插入重复数据和优化数据存储。MySQL 中 UNIQUE 关键字的作用UNIQUE 关键字用于在 MySQL 表中创建唯一
mysql中unique的作用
2024-04-26

ORA-02429: cannot drop index used for enforcement of unique/primary key ORACLE 报错 故障修复 远程处理

文档解释ORA-02429: cannot drop index used for enforcement of unique/primary keyCause: user attempted to drop an index that
ORA-02429: cannot drop index used for enforcement of unique/primary key ORACLE 报错 故障修复 远程处理
2023-11-04

ORA-14064: Index with Unusable partition exists on unique/primary constraint key ORACLE 报错 故障修复 远程处理

文档解释ORA-14064: Index with Unusable partition exists on unique/primary constraint keyCause: User attempted to add or
ORA-14064: Index with Unusable partition exists on unique/primary constraint key ORACLE 报错 故障修复 远程处理
2023-11-05

sql中unique和distinct

在SQL中,`UNIQUE`和`DISTINCT`都用于返回唯一的结果集,但在使用上有一些区别。`UNIQUE`用于创建唯一约束,以确保表中的某个列或者一组列的值是唯一的。当在列上定义了唯一约束后,该列将不允许重复的值。如果尝试插入一个重复
2023-09-02

mongoose设置unique不生效问题的解决及如何移除unique的限制

前言 unique属于schema约束验证中的一员,他的作用主要就是让某一个字段的值具有唯一性(不能重复)保持字段的唯一性使用type值: {type:String,unique:true,dropDups: true}注意:mongoos
2022-06-04

laravel中unique怎么用

这篇文章主要为大家展示了“laravel中unique怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laravel中unique怎么用”这篇文章吧。laravel unique的用法是“e
2023-06-22

oracle中unique的用法

oracle中的unique约束确保表中特定列或列组合具有唯一值,防止重复数据插入。它通过以下规则实现:1. 插入或更新操作中,指定列或列组合的值不可与现有值重复;2. 允许建立索引以提高查询效率。Oracle 中 UNIQUE 约束的用法
oracle中unique的用法
2024-05-03

navicat怎么设置unique

为表创建唯一索引:打开 navicat 并选择目标数据库。选择要添加唯一索引的表并打开“索引”选项卡。创建新索引并设置索引名称、勾选“唯一”复选框、选择包含唯一键的列和排序顺序。应用更改以创建索引,确保表中每个行的指定列组合都是唯一的。如何
navicat怎么设置unique
2024-04-24

编程热搜

目录