`

3.MongoDB 索引

阅读更多

1.索引的简单使用

(1)创建索引 ensureIndex

避免表扫描,一定要创建查询中用到的所有键的索引,默认最多创建64个

db.users.ensureIndex({"name":1})

联合索引 对单个键不起作用

db.users.ensureIndex({"date":1,"username":1})

 

(2) 查询索引

索引的元信息储存在各个数据库的system.indexes中

通过db.system.indexes.find()可以查询

db.system.namespaces.find()可以看到命名空间

 

(3)删除索引

db.system.indexes.find() 查询system.indexes查询索引名

db.runCommand({"dropIndexes":"foo","index":"id_1_legId_1"})

删除所有用 *

db.runCommand({"dropIndexes":"collectionA","index":"*"})

 

(4)如果有多个键可能需要考虑索引的方向

建立索引时sort中相同 1相当于asc升序 和 -1是desc降序

比如date最好就用 -1 ,当数据量很大的时候,可以将最后几天的索引保存在内存中,有效减少内存交换

 

(5)内嵌文档中的键建立索引

内嵌文档的键建立和普通文档创建索引没有区别

db.blog.ensureIndex({"comments.date":-1})

 

(6)索引命名

通过 db.system.indexes.find(),可以看到索引默认名称为key1_sort_key2_sort,比如date_-1_username_1

可以通过设置name来自己命名

db.foo.ensureIndex({"a":1,"b":1,"c":1},{"name":"alphabet"})

 

2.唯一索引

(1)创建

db.foo.ensureIndex({"bar":1},{"unique":true})

 

(2)消除重复

dropDups选项 将所有包含重复值的文档删掉 

db.foo.ensureIndex({"bar":1},{"unique":true,“dropDups”:true})

 

(3)复合唯一索引

创建复合唯一索引的时候,集合中单独某一个键可以相同,所有键组合起来不相同即可

 

3.使用explain和hint

(1)explain

获取查询执行的细节(用到的索引、结果数量、耗时等),并非真正执行查询

db.users.find().explain()

"cursor" : "BasicCursor" 查询没有使用索引

"nscanned" : 1 代表检查了多个文档

"n" : 1 结果文档记录总数

"millis" : 0 执行查询的毫秒数

 

MongoDB 3.0 需要传入三个参数

 "queryPlanner"(默认) "executionStats" "allPlansExecution". 

 

(2)hint

强制使用某个索引

db.users.find({"age":28,"name":/.*/}).hint({"name":1,"age":1})

 

4.地理空间索引

(1) 说明

例如用于离我最近的N个场所,参数是"2d"

db.map.ensureIndex({"gps":"2d"})

gps的键值对必须是某种形式的一对值:一个包含两个元素的数组或者是包含两个键的内嵌文档,比如

{"gps":[0, 100]}

{"gps":{“x”:-30, "y":30}}

{"gps":{"latitude":-180, "longitude":180}}

 

(2)取值范围

键名可以随意,值的范围是-180~180,如果想用其他值,通过ensureIndex的选项来指定最大最小值

db.users.ensureIndex({"light-years":"2d"},{"min":-1000,"max":1000})

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    计算机后端-PHP视频教程. mongodb07 索引.wmv

    计算机后端-PHP视频教程. mongodb07 索引.wmv

    Python库 | jaraco.mongodb-9.4b5.tar.gz

    3. 测试用例:验证库功能正确性的单元测试或集成测试。 4. 配置文件:可能包括setup.py,这是一个Python脚本,用于构建、安装和打包项目。 5. 许可证文件:定义库的使用、复制和分发条件。 在使用jaraco.mongodb时...

    The.Definitive.Guide.to.MongoDB.pdf

    5. **地理空间索引**:MongoDB内置了地理空间索引功能,非常适合位置相关的应用。 ### 书籍主要内容 本书旨在帮助读者全面了解MongoDB的核心概念、操作技巧以及最佳实践,内容涵盖了以下几个方面: 1. **MongoDB...

    MONGODB的索引探究

    3. 复合域索引:可以同时为多个字段创建索引,例如 `db.collection.ensureIndex( { a: 1, b: 1, c: 1 } )`,顺序很重要,影响查询优化。这种索引支持多个查询条件的组合。 4. 复合键索引:特别适用于数组字段内的...

    MongoDB The Definitive Guide 3rd Edition.pdf

    3. MongoDB的数据模型:MongoDB的数据模型是基于文档的,每个文档都是一个独立的数据单元,可以包含多个字段和值。 MongoDB的数据模型是灵活的,可以根据需要动态地添加或删除字段。 4. MongoDB的查询语言:MongoDB...

    .MongoDB.The.Definitive.Guide

    - **索引**: Ellen Troutman Zaig - **封面设计**: Karen Montgomery - **内部设计**: David Futato - **插图**: Robert Romano - **其他信息**: - **商标**: 本书中的Nutshell Handbook、Nutshell Handbook ...

    使用Morphia框架操作mongodb

    在实际项目中,你可能需要处理更复杂的情况,如事务支持、懒加载、索引管理等。Morphia提供了丰富的API来应对这些问题。确保了解并熟练使用这些特性,可以让你在操作MongoDB时更加得心应手。 在`mongodbDemo`这个...

    MongoDB 45 道面试题及答案.docx

    3. MongoDB 中的分片是指在多台计算机上存储数据记录的过程,可以满足数据增长的需求。 MongoDB 集合和文档 1. MongoDB 中的集合是指存储 BSON 对象的容器。 2. MongoDB 中的文档是指 BSON 对象,包含字段和值。...

    13.mongodb.rar

    3. **数据库(Databases)**:数据库是MongoDB中存储数据的地方,每个数据库有自己的命名空间和权限设置。例如,你可以创建一个名为"myDatabase"的数据库来存储前端应用的数据。 4. **CRUD操作**:创建(Create)、...

    Pro.MongoDB.Development.2015 (英文pdf+源码)

    4. **性能优化**:讲述了如何监控和优化MongoDB的性能,包括索引的创建和管理、查询优化、内存调优、写入优化等,以确保应用程序的高效运行。 5. **复制集与分片**:详细介绍了MongoDB的高可用性和可扩展性机制,如...

    MongoDB c#驱动 dll

    5. **创建和使用索引**:MongoDB支持多种类型的索引,包括单字段、复合字段和地理空间索引。在C#驱动中,可以使用 IndexModel 和 CreateIndex 方法创建索引。 ```csharp var indexModel = new CreateIndexModel...

    MongoDB数据库索引介绍.pptx

    MongoDB 数据库索引介绍 MongoDB 数据库索引是提高查询性能和减少查询时间的重要手段。索引可以告诉 MongoDB 如何高效地检索数据,以便快速地找到所需的数据。在本文中,我们将深入探讨 MongoDB 数据库索引的基础...

    MongoDB企业级分片集群搭建视频.zip

    5 MongoDB索引查询与建立.mp4 6 MongoDB数据库的监控命令.mp4 7 MongoDB副本集的搭建.mp4 8 MongoDB副本集故障自动切换.mp4 9 MongoDB副本集各实例的优先级设置.mp4 10 MongoDB副本集的伸缩.mp4 11 MongoDB数据的...

    MongoDB总结,文件为md 格式 可以利用Typora打开文件

    MongoDB索引 - 索引是提升查询性能的关键,`db.collection.createIndex()`用于创建索引。 - 单字段索引、复合索引、唯一索引、全文索引等满足不同查询需求。 - 使用`db.collection.getIndexes()`查看现有索引,`db...

    MongoDB学习笔记(六) MongoDB索引用法和效率分析

    3. **组合索引**:可以同时为多个字段创建索引,定义字段的排序顺序。例如,创建一个按`UserId`升序,`UserName`降序的组合索引: ```csharp mongoCollection.Metadata.CreateIndex(new Document { { "UserId", 1...

Global site tag (gtag.js) - Google Analytics