MongoDB之索引和聚合
最佳答案 问答题库1148位专家为你答疑解惑
文章目录
- 一、索引
- 1、说明
- 2、原理
- 3、相关操作
- 3.1、创建索引
- 3.2、查看集合索引
- 3.3、查看集合索引大小
- 3.4、删除集合所有索引(不包含_id索引)
- 3.5、删除集合指定索引
- 4、复合索引
- 二、聚合
- 1、说明
- 2、使用
- 总结
一、索引
1、说明
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。
2、原理
从根本上说,MongoDB中的索引与其他数据库系统中的索引类似。MongoDB在集合层面上定义了索引,并支持对MongoDB集合中的任何字段或文档的子字段进行索引。
默认_id已经创建了索引。
3、相关操作
3.1、创建索引
db.集合名称.createIndex(keys, options)
db.集合名称.createIndex({"title":1,"description":-1})
说明: 语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
createIndex() 接收可选参数,可选参数列表如下:
3.2、查看集合索引
db.集合名称.getIndexes()
3.3、查看集合索引大小
db.集合名称.totalIndexSize()
3.4、删除集合所有索引(不包含_id索引)
db.集合名称.dropIndexes()
3.5、删除集合指定索引
db.集合名称.dropIndex("索引名称")
4、复合索引
说明: 一个索引的值是由多个 key 进行维护的索引的称之为复合索引
db.集合名称.createIndex({"title":1,"description":-1})
注意: mongoDB 中复合索引和传统关系型数据库一致都是左前缀匹配原则
二、聚合
1、说明
MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似 SQL 语句中的 count(*)。
2、使用
db.test.insertMany([{title: 'MongoDB Overview', description: 'MongoDB is no sql database',by_user: 'runoob.com',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100},{title: 'NoSQL Overview', description: 'No sql database is very fast',by_user: 'runoob.com',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 10},{title: 'Neo4j Overview', description: 'Neo4j is no sql database',by_user: 'Neo4j',url: 'http://www.neo4j.com',tags: ['neo4j', 'database', 'NoSQL'],likes: 750}]);
现在我们通过以上集合计算每个作者所写的文章数,使用aggregate()计算结果如下:
db.test.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
注意:此处的_id是分组表示,不是文档的 _id.
常见聚合表达式
总结
以上就是MongoDB之索引和聚合的相关知识点,希望对你有所帮助。
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"MongoDB之索引和聚合":http://eshow365.cn/6-40107-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: openfeign整合sentinel出现异常
- 下一篇: ClickHouse SQL 查询优化