Mongodb的索引操作
Mongodb的索引操作
1. 为什么mongdb需要创建索引
- 加快查询速度
- 进行数据的去重
2. mongodb创建简单的索引方法
- 语法:
db.集合名.ensureIndex({属性:1})
,1表示升序, -1表示降序
3. 创建索引前后查询速度对比
测试:插入10万条数据到数据库中
插入数据:
for(i=0;i<100000;i++){db.t1.insert({name:'test'+i,age:i})}
创建索引前:
db.t1.find({name:'test10000'})
db.t1.find({name:'test10000'}).explain('executionStats') # 显示查询操作的详细信息
创建索引:
db.t1.ensureIndex({name:1})
创建索引后:
db.t1.find({name:'test10000'}).explain('executionStats')
前后速度对比
4. 索引的查看
默认情况下_id是集合的索引 查看方式:db.集合名.getIndexes()
5. 删除索引
语法:db.集合名.dropIndex({'索引名称':1})
db.t1.dropIndex({name:1})
db.t1.getIndexes()
6. mongodb创建唯一索引
在默认情况下mongdb的索引域的值是可以相同的,创建唯一索引之后,数据库会在插入数据的时候检查创建索引域的值是否存在,如果存在则不会插入该条数据,但是创建索引仅仅能够提高查询速度,同时降低数据库的插入速度。
6.1 添加唯一索引的语法:
db.集合名.ensureIndex({"字段名":1}, {"unique":true})
6.2 利用唯一索引进行数据去重
根据唯一索引指定的字段的值,如果相同,则无法插入数据
db.t1.ensureIndex({"name":1}, {"unique":true}) db.t1.insert({name: 'test10000'})
7. 建立复合索引
在进行数据去重的时候,可能用一个域来保证数据的唯一性,这个时候可以考虑建立复合索引来实现。
例如:抓全贴吧信息,如果把帖子的名字作为唯一索引对数据进行去重是不可取的,因为可能有很多帖子名字相同
建立复合索引的语法:db.collection_name.ensureIndex({字段1:1,字段2:1}) 【创建后可以单独使用索引1,但是不能单独使用索引2,只能是使用索引1后才能使用索引2】
8. 建立索引注意点
- 根据需要选择是否需要建立唯一索引
- 索引字段是升序还是降序在单个索引的情况下不影响查询效率,但是带复合索引的条件下会有影响
数据量巨大并且数据库的读出操作非常频繁的时候才需要创建索引,如果写入操作非常频繁,创建索引会影响写入速度
例如:在进行查询的时候如果字段1需要升序的方式排序输出,字段2需要降序的方式排序输出,那么此时复合索引的建立需要把字段1设置为1,字段2设置为-1
Mongodb的索引操作相关推荐
- 二、mongodb数据库系列——聚合操作 索引操作 权限管理
一.mongodb的聚合操作 学习目标 了解 mongodb的聚合原理 掌握 mongdb的管道命令 掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处 ...
- mongodb 输出数组字段_MongoDb文档操作、索引操作
学习主题:MongoDb 学习目标: 掌握mongodb文档的更新 掌握mongodb文档的删除 掌握mongodb文档的查找 掌握mongodb文档的条件操作符 掌握mongodb中的索引操作 Mo ...
- MongoDB中的索引操作
本文来说下MongoDB中的索引操作 文章目录 概述 createIndex() 方法 语法 createIndex() 可选参数 索引操作 测试实例 本文小结 概述 索引通常能够极大的提高查询的效率 ...
- 8天学通MongoDB——第四天 索引操作
原文:8天学通MongoDB--第四天 索引操作 这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性 ...
- MongoDB复合索引详解
摘要: 对于MongoDB的多键查询,创建复合索引可以有效提高性能. 什么是复合索引? 复合索引,即Compound Index,指的是将多个键组合到一起创建索引,这样可以加速匹配多个键的查询.不妨通 ...
- MongoDB:详细解释mongodb的高级操作,聚合和游标
前几天总结了mongodb的安装入门.详细解释了增删改查的基本操作,今天再来总结下mongodb更高级的操作,聚合和游标. 一.聚合,mongodb的聚合操作一般分为四种情景,分别是:count.di ...
- MongoDB数据库索引基础知识与实战技巧
本文内容源自Kyle Banker 的MongoDB In Action一书.主要描述了MongoDB索引相关的一些基础知识和使用技巧. 索引类型 虽然MongoDB的索引在存储结构上都是一样的,但是 ...
- 五、MongoDB的索引
一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 四.MongoDB的查询 五.MongoDB的索引 1.简介 它就像是一本书的目录,如果没 ...
- mongodb及其索引的使用例子
1.获取某个属性最大的value值并自增范例 因为mongo不支持类似select max操作,也不支持递增int的操作,所以采用目前的方案 #找到符合table_name的记录,find输出时只输出 ...
最新文章
- Python使用matplotlib可视化华夫饼图(Waffle Chart) 、华夫饼图可以直观地显示完成度(百分比)或者部分占整体的比例、从不同的分类变量来可视化华夫饼图(Waffle Chart
- php flock 死锁了,php – 防止由flock引起的死锁
- 10款最好的免费在线工具进行网站设计与开发
- 动态规划入门 洛谷P1108 低价购买
- .net 显示时间为YYYY-MM-DD格式
- 直接载入内存中的DLL
- kafka内存不断增加_分布式发布订阅消息系统Kafka 为什么快
- python中none是什么类型_如何在Python中”测试”None类型?
- Android音乐播放器高级开发
- 【原创】利用typeface实现不同字体的调用显示及String转换为Unicode
- 为什么能上QQ而不能上网
- 理解类路径是什么意思?如何运用包?
- armeabi-v7a arm64-v8a armeabi x86 x86_64区别
- Eclipse中文版之完美汉化教程(详细图解)
- 控制理论PID的理解
- Android 进阶之路《丢掉初学者的诟病》
- Jenkins上配置Robot Framework测试邮件通知模板
- AIIA开发者大会百度飞桨及EasyDL专场:带你看五花八门的产业AI实践
- 操作系统的奋斗(一)计算机系统概述
- 《Java 2 实用教程》读书笔记(二)
热门文章
- 用算法改造过的植物肉,有兴趣试试么?
- 比Python 3.8快20%,Pyston v2正式发布
- 确认了!MySQL 狠甩 Oracle 稳居 Top1!
- GitHub接连封杀开源项目惹众怒,CEO亲自道歉
- 为何Google、微软、华为将亿级源代码放一个仓库?从全球最大代码管理库说起...
- “不给钱就删库”的勒索病毒, 程序员该如何防护?
- 假设检验怎么做?这次把方法+Python代码一并教给你
- 英伟达发布RTX 2000系列显卡,“实时光线追踪”究竟能为游戏带来什么?
- 牛逼!一个故事讲清楚 NIO 了
- 设计一个成功的微服务,堪称必备的9个基础知识