MongoDB unique index
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,MongoDB unique index实战Part1:写在最前MongoDB的 unique index索引这里有个注意事项,主要体现在对NULL值的处理上,本文加以复现。整体环境:MongoDB
千家信息网最后更新 2024年10月19日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而导致插入失败。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
索引
文档
错误
不妥
事项
内容
地方
多个
实战
情况
数据
整体
时间
有限
水平
注意事项
环境
笔者
读者
中生
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
cpf网络安全
中山专业冷库软件开发
dhc服务器绑定
港口数据库
文献数据库毕业论文
手机体检软件开发
济南鲁通网络技术怎么样
康师傅免流添加服务器
职业学校管理软件开发公司
网络安全 法律汇编
数据库id关联不好迁移
数据库id有标识如何设置
大众服务器连接不上
网络安全知识黑板
方舟联机怎么创建自己的服务器
贵阳软件开发培训哪里好
广州简贷互联网科技
张湾区专业软件开发服务保障
数据库技术考卷
app网络技术发展
软件开发工程师证书查询
网络安全防范差距在哪里
山东省服务器域名
软件开发中开发人员间协作
齐向东谈网络安全投入
数据库安全出什么问题吗
暑期计算机网络技术实习工作
计算机网络技术怎么样啊
数据库中索引的主要目的
广州简贷互联网科技