参考:
http://www.ttlsa.com/mongodb/mongodb-index-explain-profile-4/
http://m.blog.csdn.net/blog/tianwei7518/44464917
一、语法
语法:db.COLLECTIONS_NAME.ensureIndex({KET:-1}) --1 升序索引,-1 降序索引
二、查看索引
> db.ttlsa_events.getIndexes();
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "ttlsa_login.ttlsa_events",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"stmp" : -1
},
"ns" : "ttlsa_login.ttlsa_events",
"name" : "stmp_-1"
},
{
"v" : 1,
"key" : {
"uid" : 1,
"stmp" : -1
},
"ns" : "ttlsa_login.ttlsa_events",
"name" : "uid_1_stmp_-1"
}
]
此实例中有三个索引,其中_id_是创建表时自动创建的索引,不能删除。
三、创建索引
索引参数有:
option values default
backgroud true/falsefalse
dropDups true/falsefalse
unique true/falsefalse
sparse true/falsefalse
>db.ttlsa_posts.ensureIndex({pid:1});
当有大量数据时,创建索引会非常耗时,可以指定到后台执行,只需指定“backgroud:true”即可。如
>db.ttlsa_posts.ensureIndex({pid:1},{backgroud:true});
四、索引分类
1.默认索引
MongoDB有个默认的"_id"的键,他相当于"主键"的角色。集合创建后系统会自动创建一个索引在"_id"键上,它是默认索引,索引名叫"_id_",是无法被删除的。
2.单列索引
在单个键上创建的索引就是单列索引,如我们创建的db.user.ensureIndex({"name" : 1}
3.组合索引
同时对多个键创建组合索引。如下:
>db.user.ensureIndex({"name" : 1,"age" : 1}
//以下的查询将使用到此索引
> db.user.find({"name":'Jack',"age":20})
> db.user.find({"name":'Jack'})
> db.user.find().sort({"name":1})
对多个值进行组合索引,查询时,子查询与索引前缀匹配时,才可以使用该组合索引。
4.嵌入式索引
为内嵌文档的键创建索引与普通的键创建索引并无差异。
如:
> db.user.save({"name":"Jack","age":25,"address":{"city":"beijing"}});
> db.user.ensureIndex({"address.city":1})
5.文档式索引
索引建立在嵌入式文档类型的字段上。
如:
> db.user.save({"name":"Jack","age":25,"address":{"city":"beijing"}});
> db.user.ensureIndex({"address":1})
6.唯一索引
只需要在ensureIndex命名中指定"unique:true"即可。唯一索引限制了对当前键添加值时,不能添加重复的信息。值得注意的是,当文档不存在指定键时,会被认为键值是“null”,所以“null”也会被认为是重复的,所以 一般被作为唯一索引的键,最好都要有键值。可以使用dropDups来保留第一个文档,而后的重复文档将删除,这种方法慎重操作。
>db.user.ensureIndex({name:1},{unique:true});
7.sparse索引
对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档。默认值为 false。解决索引文件过大的问题。不会对该键值为空的行做索、 引。
>db.user.ensureIndex({name:1},{sparse:true});
8.过期索引-expireAfter
指定一个值,以秒为TTL控制多久MongoDB的文档保留在此集合。储存在过期时间的字段必须是时间类型(ISODate或ISODate数组),不能使用复合索引。如果使用的是ISODate数组,则按照最小时间进行删除。
>db.user.ensureIndex({name:1},{expireafterseconds:3600});
9.covered索引
如果你查找的值正好是在索引中,则可以直接返回索引中存的值,而不用到数据文件中查找。当用explain时,当indexOnly=true,表示有用到covered index。
10.全文索引
mongodb全文索引是在2.4版本引入的。
11.理位置索引
关于LBS相关项目,一般存储每个地点的经纬度的坐标, 如果要查询附近的场所,则需要建立索引来提升查询效率。 Mongodb专门针对这种查询建立了地理空间索引。 2d和2dsphere索引,分别是针对平面和球面。
分享到:
相关推荐
7. **集合与数据库操作**:允许开发者轻松创建、查询和管理MongoDB中的数据库和集合,支持索引创建、查询优化等。 8. **GridFS**:支持MongoDB的文件存储系统GridFS,用于存储和检索大文件,将文件拆分为多个块存储...
MongoDB Community Server(mongodb-org-server-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB Community Server(mongodb-org-server_...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
这个驱动程序使开发者能够方便地执行CRUD(创建、读取、更新、删除)操作,以及执行聚合框架、地理空间查询和索引操作。 在3.5.0版本中,开发者还可以利用新的特性,如批量写操作,这允许一次性发送多个写操作,...
MongoDB Community Server(mongodb-org-server-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB Community Server(mongodb-linux-aarch...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB Community Server(mongodb-linux-x86_...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
6. 索引:MongoDB提供了多种类型的索引,如单字段、复合、地理空间和文本索引,以加速查询速度。 7. 查询语言:MongoDB使用自己的查询语言MQL,它类似JavaScript,提供了丰富的查询和更新操作。 在Linux环境下安装...
6. **性能提升**:在读写性能上进行了优化,尤其是对于读操作,如范围查询和索引扫描,性能得到了显著提升。 7. **新查询操作符**:增加了诸如`$expr`等新查询操作符,使得在查询表达式中可以使用聚合操作符。 8. ...
MongoDB Compass是MongoDB公司开发的一款强大的图形用户界面(GUI)工具,专为MongoDB数据库管理系统设计。这个工具的主要目标是简化数据库的管理和操作,使非技术用户也能轻松理解和探索数据。"mongodb-compass-...
Ubuntu 18.04 LTS是Ubuntu的一个长期支持版本,提供了长达五年的安全更新和技术支持,因此是企业级部署的热门选择。对于aarch64架构,它是64位ARM处理器的Linux发行版,适用于基于ARM的服务器和设备,比如 Raspberry...
MongoDB Community Server(mongodb-org-mongos-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB Community Server(mongodb-src-r5.0.4....Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB Community Server(mongodb-windows-x86...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
4. **地理空间索引**:MongoDB提供了对地理位置数据的强大支持,可以进行高效的地理空间查询,适用于地图应用、物流追踪等场景。 5. **聚合框架**:MongoDB的聚合框架提供了类似于SQL的聚合操作,可以进行复杂的...
MongoDB是一款开源、高性能、无模式的分布式文档型数据库,被广泛应用于Web应用程序、大数据分析、内容管理系统等场景。此“mongodb-windows-x86-64-6.0.5”是针对Windows 64位操作系统的最新稳定版本,旨在为用户...
五、MongoDB的监控与维护 1. 日志监控:MongoDB的日志文件默认位于`/var/log/mongodb/mongod.log`,可以通过`tail -f`命令实时查看。 2. 健康检查:使用`db.serverStatus()`检查MongoDB服务器的状态。 3. 备份恢复...
MongoDB 是一个高性能、开源...在实际使用中,还需要了解其复制集、分片集群、索引管理、查询优化、备份与恢复、安全策略等高级特性。MongoDB提供了丰富的文档和社区资源,帮助开发者更好地利用这个强大的数据库系统。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是...
10. **性能优化**:MongoDB团队持续对查询执行、索引构建和内存管理等核心功能进行优化,确保4.4.1在各种工作负载下都能表现出色。 为了在Linux环境中使用这个压缩包,你需要首先解压,然后按照MongoDB的官方指南...