【MongoDB学习笔记23】MongoDB的索引对象和数组
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,MongoDB允许深入文档内部,对嵌套字段和数组建立索引;嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与"正常"索引字段的行为也是一致的。一、索引嵌套文档例如,集合中的文档如下格式
千家信息网最后更新 2024年11月26日【MongoDB学习笔记23】MongoDB的索引对象和数组
MongoDB允许深入文档内部,对嵌套字段和数组建立索引;嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与"正常"索引字段的行为也是一致的。
一、索引嵌套文档
例如,集合中的文档如下格式,
> db.post.findOne({"username":"sid"}) { "_id" : ObjectId("54aff7f43bd1048e7b585e39"), "username" : "sid", "loc" : { "ip" : "1.2.3.4", "city" : "springfield", "state" : "ny" } } >
需要在"loc"的city上建立索引来提高这个loc.city字段的查询速度:
> db.post.ensureIndex({"loc.city":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } >
利用这种方式可以建立任意深度的索引,例如可以在X.Y.Z.A.B.C上建立索引。
但是,针对子文档"loc"上建立的索引,和建立在子文档的某个字段"loc.city"上的索引是不同的:
(1)对整个子文档上建立的索引,只会提高整个子文档的的查询速度;也就是说只有在完全匹配子文档的查询(包括字段顺序),子文档索引才会起作用;
(2)只有查询loc.city字段,索引loc.city才会起作用,其他情况索引loc.city不起作用;
二、数组上的索引
(1)可以看得出在数组字段上建立索引的代价比较大,因为每次的删除,更新都会对每一个索引进行刷新,太消耗服务器的资源;
(2)可以针对数组字段中的某一个元素做具体的单独索引,减少索引的数量;例如,在数组字段comments中的第九个元素中的votes上建立索引:
> db.post.ensureIndex({"comment.10.votes":1})
同样,只有精确匹配comment.10.votes查询,上述索引才会起到索引的作用。
三、多键索引
如果在数组字段上创建索引,那么这个索引称为多键索引( multikey)。
多键索引用explain函数中可以看到"isMultikey"字段的值为true,多键索引比非多键索引要慢一些;
索引
字段
文档
数组
查询
作用
只有
个子
元素
情况
速度
对象
不同
精确
一致
也就是
也就是说
代价
函数
和数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
巫山im即时通讯软件开发
html怎么输出数据库全部信息
网络安全黑板报内容初中
软件开发过程的基本思想
用友数据库重新初始化
惠州2011服务器散热器定做
生态环境网络安全教育
网络安全预防诈骗手抄报初中
帮我搜索网络安全的手抄报
软件开发三大圣经
ajax获取数据库
沈阳瑞雅互联网科技有限公司
搞软件开发的小说
大学计算机网络技术书本
天酷游戏软件开发
辽宁网络技术有限公司
产品开发 数据库
php 数据库取值
内蒙古知名软件开发价格
嘉兴构建智慧小区软件开发
苏州电商erp软件开发
学软件开发前途如何
非凡网络技术交流
网络安全用户权限设置
网络技术公司是一般纳税人吗
2u机架服务器怎么样
清华大学网络安全学院毕业证书
陈俊宇网络安全
软件开发细目表
旧的服务器