MongoDB unique index
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,MongoDB unique index实战Part1:写在最前MongoDB的 unique index索引这里有个注意事项,主要体现在对NULL值的处理上,本文加以复现。整体环境:MongoDB
千家信息网最后更新 2024年11月30日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安全错误
数据库的锁怎样保障安全
共筑网络安全有哪些
安卓数据库小程序
闪存数据库作用
网络安全应届生工资
中软件开发工程师岗位职责
辽宁超级计算套料软件开发商
欧睿数据库登录
网络安全法公布
女性犯罪人员数据库
现代化网络技术销售公司
电脑服务器的降温方式
哪种数据库更便宜
互联网广告翻译黑科技
赢时胜软件开发中心北京分部
2017自学网络技术
软件技术计算机网络技术
抖音最好的生存服务器在哪里
水星服务器管理员初始密码
数据库操作如何改变两个列的位置
共建网络安全知识资料
未成年人玩网络安全吗
我的世界服务器如何实现伪和平
即时通讯软件开发哪里
myaql数据库的介绍
大圣网络技术博客
位置服务器自动运行
中医学计算机网络技术
幕智网络技术有限公司怎样
wps办公软件开发票
前端怎么知道服务器下的文件