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})
相关推荐
计算机后端-PHP视频教程. mongodb07 索引.wmv
3. 测试用例:验证库功能正确性的单元测试或集成测试。 4. 配置文件:可能包括setup.py,这是一个Python脚本,用于构建、安装和打包项目。 5. 许可证文件:定义库的使用、复制和分发条件。 在使用jaraco.mongodb时...
5. **地理空间索引**:MongoDB内置了地理空间索引功能,非常适合位置相关的应用。 ### 书籍主要内容 本书旨在帮助读者全面了解MongoDB的核心概念、操作技巧以及最佳实践,内容涵盖了以下几个方面: 1. **MongoDB...
3. 复合域索引:可以同时为多个字段创建索引,例如 `db.collection.ensureIndex( { a: 1, b: 1, c: 1 } )`,顺序很重要,影响查询优化。这种索引支持多个查询条件的组合。 4. 复合键索引:特别适用于数组字段内的...
3. MongoDB的数据模型:MongoDB的数据模型是基于文档的,每个文档都是一个独立的数据单元,可以包含多个字段和值。 MongoDB的数据模型是灵活的,可以根据需要动态地添加或删除字段。 4. MongoDB的查询语言:MongoDB...
- **索引**: Ellen Troutman Zaig - **封面设计**: Karen Montgomery - **内部设计**: David Futato - **插图**: Robert Romano - **其他信息**: - **商标**: 本书中的Nutshell Handbook、Nutshell Handbook ...
在实际项目中,你可能需要处理更复杂的情况,如事务支持、懒加载、索引管理等。Morphia提供了丰富的API来应对这些问题。确保了解并熟练使用这些特性,可以让你在操作MongoDB时更加得心应手。 在`mongodbDemo`这个...
3. MongoDB 中的分片是指在多台计算机上存储数据记录的过程,可以满足数据增长的需求。 MongoDB 集合和文档 1. MongoDB 中的集合是指存储 BSON 对象的容器。 2. MongoDB 中的文档是指 BSON 对象,包含字段和值。...
3. **数据库(Databases)**:数据库是MongoDB中存储数据的地方,每个数据库有自己的命名空间和权限设置。例如,你可以创建一个名为"myDatabase"的数据库来存储前端应用的数据。 4. **CRUD操作**:创建(Create)、...
4. **性能优化**:讲述了如何监控和优化MongoDB的性能,包括索引的创建和管理、查询优化、内存调优、写入优化等,以确保应用程序的高效运行。 5. **复制集与分片**:详细介绍了MongoDB的高可用性和可扩展性机制,如...
5. **创建和使用索引**:MongoDB支持多种类型的索引,包括单字段、复合字段和地理空间索引。在C#驱动中,可以使用 IndexModel 和 CreateIndex 方法创建索引。 ```csharp var indexModel = new CreateIndexModel...
MongoDB 数据库索引介绍 MongoDB 数据库索引是提高查询性能和减少查询时间的重要手段。索引可以告诉 MongoDB 如何高效地检索数据,以便快速地找到所需的数据。在本文中,我们将深入探讨 MongoDB 数据库索引的基础...
5 MongoDB索引查询与建立.mp4 6 MongoDB数据库的监控命令.mp4 7 MongoDB副本集的搭建.mp4 8 MongoDB副本集故障自动切换.mp4 9 MongoDB副本集各实例的优先级设置.mp4 10 MongoDB副本集的伸缩.mp4 11 MongoDB数据的...
MongoDB索引 - 索引是提升查询性能的关键,`db.collection.createIndex()`用于创建索引。 - 单字段索引、复合索引、唯一索引、全文索引等满足不同查询需求。 - 使用`db.collection.getIndexes()`查看现有索引,`db...
3. **组合索引**:可以同时为多个字段创建索引,定义字段的排序顺序。例如,创建一个按`UserId`升序,`UserName`降序的组合索引: ```csharp mongoCollection.Metadata.CreateIndex(new Document { { "UserId", 1...