【MongoDB学习笔记25】MongoDB的索引类型
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,创建索引可以指定一些选项,使用不同的选项建立的索引会有不同的行为。一、唯一索引唯一索引可以确保每一个文档的指定键都有唯一的值。例如,想确定文档中的username键不重复,创建一个唯一索引:> db.
千家信息网最后更新 2025年11月07日【MongoDB学习笔记25】MongoDB的索引类型
创建索引可以指定一些选项,使用不同的选项建立的索引会有不同的行为。
一、唯一索引
唯一索引可以确保每一个文档的指定键都有唯一的值。例如,想确定文档中的username键不重复,创建一个唯一索引:
> db.users.findOne() { "_id" : ObjectId("54ad5826245d1b7d58b53238"), "i" : 2, "username" : "user2", "age" : 39, "created" : ISODate("2015-01-07T16:00:38.634Z") }> db.users.ensureIndex({"username":1},{"unique":true}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }> db.users.insert({"username":"user2"}) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: blog.users.$username_1 dup key: { : \"user2\" }" } }) >可以看出创建唯一索引后,就不能插入相同的键值;
1.唯一复合索引
创建唯一复合索引,复合索引的单键值可以重复,但是组成唯一复合索引的组合键值只能唯一。例如:
如果有一个{"username":"user2","age":18}有唯一的索引,下面的插入是合法的,
>db.users.insert({"username":"bob"})>db.users.insert({"username":"bob","age":23})>db.users.insert({"username":"fred","age":23})如果再次插入这三项中的任意一个,会导致键重复异常;
2.去重复
对于已经有重复值的字段上创建唯一索引,会引起错误;可以使用dropDups选项遇到重复值会保留第一个,删除其他重复项;
>db.users.ensureIndex({"username":1},{"unique":true,"dropDups":true})慎用这个选项,因为根本没有办法控制删除哪些文档;
二、稀疏索引
如果有一个可能存在也有可能不存在的字段,在此字段上创建的索引称为稀疏索引。
创建唯一稀疏索引:
>db.users.ensureIndex({"username":1},{"unique":true,"sparse":true})创建非唯一稀疏索引:
>db.users.ensureIndex({"username":1},{"sparse":true})
索引
稀疏
字段
文档
不同
合法
相同
再次
办法
单键
根本
行为
错误
面的
非唯
控制
组合
笔记
类型
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库硬件代理商利润
数据库技术基础判断题
网络安全审计与运维安全管控
职高网络技术考试题
c软件开发具备的技能/能力
计算机网络技术就业岗位要求
荆门市网络安全考试
安全策略在数据库的应用
基本网络安全策略
黄浦区智能软件开发使用方法
海峡信息_网络安全厂家
二手服务器拿来干什么
神车网络技术有限公司
服务器 445
南京华天网络技术有限公司
怎么电脑编程软件开发
天玥网络技术有限公司
维护网络安全模板
国家电网网络安全宣传标语
国家网络安全基地开工了吗
女孩适不适合学网络安全
高频交易软件开发成本
集思网络安全知识
国外数据库网站
主流数据库连接池
社会实践照片软件开发
向数据库中添加的表
青浦区口碑好的软件开发诚信合作
数据库技术与原理
癌症患者可以做软件开发吗