2、MongoDB学习之索引的管理

目标:实现索引的创建、查询、删除、explan管理等操作

环境:

> db.version()

3.4.7

索引创建满足的基本需求:

1;索引提高查询速度

2;在mongodb中,索引可以按自动列升序/降序来创建,便于排序

3;默认是用btree来组织索引文件,2.4版本以后,也允许建立hash索引

管理索引常用到的语法有:

db.c1.createIndex(keypattern[,options])    #keypattern表示索引匹配的字段列,例如name:1 表示那么列升序建立索引,[,options]表示使用另一个字段列创建索引,从而组成复合索引

db.c1.getIndexes()    #查看索引的语法,当还没有手动创建索引的时候,其实系统默认也会有索引列:_id_

db.c1.find({name:‘test10‘}).explain()    #表示查询name列集合集值test10是否有创建索引

一、索引的创建

常规的索引创建方式有基本索引、复合索引、唯一索引三类。

1、基本索引

> db.c1.createIndex({newname:1})

{

"createdCollectionAutomatically" : false,

"numIndexesBefore" : 1,

"numIndexesAfter" : 2,

"ok" : 1

}

#由上可以看出创建了一个基本的单列索引

2、复合索引的创建

> db.c1.createIndex({newname:1,age:-1})

3、唯一索引的创建

唯一索引的主要功能就是只允许字段值唯一

常用语法为:

db.c1.ensureIndex(keypattern[,options]) - DEPRECATED, use createIndex() instead

> db.c1.ensureIndex({num:1},{unique:true})

二、索引的查看

> db.c1.getIndexes()

1;查看基本索引

2;查看复合索引

3;查看唯一索引

三、explan索引验证

创建索引主要是供加快查询速度的,基本索引创建之后,基于该列查询会加快速度。复合索引一般是由两个或者多个列做成索引值,如果是单列条件查询的话,最开始创建的字段列能够有效(也就是说复合索引创建后,程序单列查询会有索引效果),但是之后的字段列的索引查询是没有效果的。如果复合索引里面用到的查询条件都是创建的复合索引时的列,字段条件查询时变换位置也没关系

使用方法:

> db.c1.find({newname:‘test5‘},{age:5}).explain()

#可以看到它的一个复合查询

四、索引的删除

常用的语法:

db.c1.dropIndex(index)

> db.c1.dropIndex({age:-1})

{ "nIndexesWas" : 6, "ok" : 1 }

> db.c1.dropIndex({num:1})

{ "nIndexesWas" : 5, "ok" : 1 }

> db.c1.dropIndex({name:1,age:-1})

{ "nIndexesWas" : 4, "ok" : 1 }

时间: 2025-01-03 09:00:17

2、MongoDB学习之索引的管理的相关文章

mongodb学习(六)索引

准备工作: 先插入100万条数据 for(i=0;i<=1000000;i++){ db.users.insert({ "i":i, "username":"user"+i, "age":Math.floor(Math.random()*120), "created":new Date() }) } 1. 创建索引: 数据量越大创建索引时间越长 db.users.ensureIndex({"

MongoDB学习笔记(索引)

一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({"username":1})    可以通过下面的名称查看索引是否已经成功建立:    > db.test.getIndexes()    删除索引的命令是:    > db.test.dropIndex({"username":1})    在MongoDB中,我们

MongoDB学习笔记(索引)(转)

一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({"username":1})    可以通过下面的名称查看索引是否已经成功建立:    > db.test.getIndexes()    删除索引的命令是:    > db.test.dropIndex({"username":1})    在MongoDB中,我们

MongoDB学习笔记~索引提高查询效率

索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoDB里的索引,在我进行对500万数据进行查询测试时,发现如果你的查询字段不加索引,那是相当恐怖的,一个简单的查询(单字段)要耗时30多秒,这种操作,基本可以认为服务器挂了,哈哈!当为字段加了索引之后,查询速度为ms级,100毫秒以内的速度真是把经兴奋坏了,呵呵! 建立索引 db.tableName.ensure

mongodb 学习笔记05 --用户管理

csdn的markdown编辑器真有够烂的,这篇文章又给弄丢了 启用认证 mongod 启动默认没有开启权限,你须要指定 –auth 启动.或者在配置文件里设置security.authorization 为 "enabled" 创建用户 db.createUser(user, writeConcern) 文档 http://docs.mongodb.org/manual/reference/method/db.createUser/#db.createUser user格式 { us

MongoDB 学习笔记之 权限管理基础

权限管理基础 MongoDB有很多用户roles,这里只是简单列举下命令的使用,具体的role的含义,请查阅官方文档. https://docs.mongodb.com/manual/reference/built-in-roles/#userAdmin 在启用权限验证之前,需要重启服务,开启auth: 命令使用示例: use admin; #创建用户,这里Mongo 3和Mongo 2用的方法不同了. db.createUser({user: 'sky', pwd: 'CSL', roles:

mongodb 学习笔记 05 -- 用户管理

启用认证 mongod 启动默认没有开启权限,你需要指定 –auth 启动,或者在配置文件中设置security.authorization 为 "enabled" 创建用户 db.createUser(user, writeConcern) 文档 http://docs.mongodb.org/manual/reference/method/db.createUser/#db.createUser user格式 { user: "<name>", pw

MongoDB学习笔记系列

回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助和启发,文章中有对新技术的研究(Mongo驱动),对老技术的回顾(代码重构),还有对架构设计的阐述等(面向接口编程,对扩展开放,对修改关闭,所以出现了IMongoRepository接口). MongoDB学习笔记系列~目录 MongoDB学习笔记~环境搭建 (2015-03-30 10:34) M

MongoDB数据模型和索引学习总结

MongoDB数据模型和索引学习总结 1. MongoDB数据模型: MongoDB数据存储结构: MongoDB针对文档(大文件採用GridFS协议)採用BSON(binary json,採用二进制编码)数据格式来存储和交换数据.Bson吸收了JSON schema-less的特点,存储结构松散,不须要像RDB(关系数据)那样事先定义数据存储的元数据结构.另外添加了多种数据类型的支持和优化,使读写更加高效. (1) BSON 支持的数据类型: Double.String.Object.Arra