首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转mongoDB(七):索引,速度的引领(全文索引、地理空间索引

本篇博文主要介绍mongoDB中一些常用的特殊索引类型,主要包括:用于简单字符串搜索的全文本索引;用于球体空间(2dsphere)的地理空间索引用于二维平面(2d)的地理空间索引。...一、全文索引 mongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制。在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题。...使用全文本索引可以非常快的进行文本搜索,mongoDB支持多种语言,可惜在免费版中,并不支持世界第一的火星文语言(汉语)。查mongoDB的官网可以看到,在企业版中是支持汉语的全文索引的。...db.news.find({$text:{$search:"flotation"}}) 结果如下图所示:图片二、2dsphere索引 2dsphere索引mongoDB最常用的地理空间索引之一...2d索引也是mongoDB最常用的地理空间索引之一,用于游戏地图。

1.1K31
您找到你想要的搜索结果了吗?
是的
没有找到

MongoDB索引

MongoDB索引 优点:索引建的好,可以提高查询效率几个数量级 缺点:索引建的越多,在插入,更新,删除的时候产生额外开销越大。...2.算术运算符,如 MongoDB索引分类 _id默认的单字段唯一索引 单字段索引:建立在集合单一字段上的索引 复合索引:建立在集合多个字段上的索引 Multikey索引:如果一个字段是一个数组,在这个字段上面创建索引...Mongodb会自己决定,是否要把这个索引建成Multikey Index。...地理空间索引:基于坐标平面查找的索引(使用场景较为特殊,暂不探讨) 文本索引:支持文档内的字符串查找 hash索引:Hash索引对key进行hash计算然后创建索引,该索引只支持等于查询,不支持区间查询...单字段索引 创建索引的api,3.0之后使用createIndex,ensureIndex已经废弃 * 对于单字段索引,排序的顺序是升序还是降序无关紧要 文档字段索引 db.records.createIndex

1.5K20

MongoDB 索引

object with these possible fields: name, unique, dropDups  name:指定索引名称  unique:是否唯一索引  dropDups:是否删除重复...  创建索引的缺点:每次插入、更新、删除时都会产生额外的开销,要尽可能少创建索引。...每个集合默认的最大索引个数为64个。  如果没有对应的键,索引会将其作为null存储,所以,如果对某个建立了唯一索引,但插入了多个缺少该索引键的文档,则由于文档包含null值而导致插入失败。 ...}  { "_id" : ObjectId("4fc6d0c9387a7fee4eb6bfa9"), "name" : "eee", "age" : 23, "  sex" : "male" }  MongoDB...参考推荐: Create a Unique Index(官方文档) MongoDB 索引 MongoDB基本管理命令 MongoDB 常用命令 MongoDB 基本操作

53710

MongoDB 索引

MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。...索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构 ---- createIndex() 方法 MongoDB使用 createIndex(...如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。 dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。...v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。...weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。

56620

MongoDB 聚合索引

MongoDB 聚合索引是一种包含多个字段的索引,它可以提高查询效率,特别是在需要对多个字段进行查询或者聚合操作时。...以下是 MongoDB 官方文档中关于聚合索引的详细说明和示例:定义聚合索引MongoDB 中,可以通过以下语法定义聚合索引:db.collection.createIndex({ field1:...可以定义多个字段,MongoDB 会按照字段的先后顺序创建索引。...优化聚合索引为了优化聚合索引的效率,可以采取以下措施:选择正确的索引字段:根据实际查询场景选择索引字段,避免创建过多或不必要的索引。...避免使用过多的索引字段:每个索引字段都需要占用额外的存储空间和处理时间,因此应该避免创建过多的索引字段。

70030

MongoDB TTL索引

本文主要描述TTL索引的使用。...如果索引字段是一个数组,即索引字段上存在着多个日期值,此时MongoDB取最小值加上失效时间(lowest()) 对于非日期字段或不包含日期数组的索引字段,文档不会失效...()或者从profile观察到删除操作 何时删除 当基于后台方式创建索引时,TTL线程能够在索引创建期间开始删除失效文档 当基于前台方式创建索引时,TTL线程在索引创建完成后开始删除失效文档...不能基于已经存在索引的字段创建TTL索引以及非日期字段创建TTL索引,文档不会失效 TTL索引不支持基于多个字段的复合索引 不支持定长集合 二、TTL索引示例 # mongo...--shell localhost:27000 TTLData.js MongoDB shell version: 3.2.11 connecting to: localhost:27000/test

1.4K00

MongoDB 索引创建

在数据量超大的情形下,任何数据库系统在创建索引时都是一个耗时的大工程。MongoDB也不例外。因此,MongoDB索引的创建有两个选择,一个是前台方式,一个是后台方式。...这样子在创建索引期间,MongoDB依旧可以正常的为提供读写操作服务 等同于关系型数据库在创建索引的时候指定online,而MongoDB则是指定background...跳过索引创建来启动 三、索引创建期间性能 后台创建索引比前台慢,如果索引大于实际可用内存,则需要更长的时间来完成索引创建 所有涉及到该集合的相关操作在后台期间其执行效能会下降,应在合理的维护空挡期完成索引的创建...七、更多参考 MongoDB 单键(列)索引 MongoDB 复合索引 MongoDB 多键索引 MongoDB 执行计划获取(db.collection.explain()) MongoDB...唯一索引 MongoDB 部分索引 MongoDB 稀疏(间隙)索引(Sparse Indexes)

2.6K00

Mongodb索引操作

一.简介 数据库的索引类似书籍的目录索引一样,有了索引,看书的时候就不用翻遍整本书,就可以根据目录页数直接跳转到目标内容,提高阅读和查询效率。...数据库的索引也是如此,它的作用就是用来提升查询速度的,有了索引MongoDB查询的时候就可以索引中找到条目后,直接跳转到目标collection的位置。...二.默认索引 检索系统索引时,可以发现,mongodb默认的为每个集合都建立了默认的”_id”索引,作为检索时参照的索引。...,并且耗时几乎为0,相比无索引的检索,效果可见一般。...五.对索引的其他操作 1.查询索引的相关信息 db.集合.stats(); 2.删除索引,删除集合,也会将集合中的索引全部删除 db.集合.dropIndex({索引字段:1}) 3.建立唯一索引:唯一索引的意思是

41420

MongoDB 索引-Index

# MongoDB 索引-Index 概述 索引的类型 单字段索引 复合索引 其他索引 索引的管理操作 索引的查看 创建索引 索引的移除 索引的使用 执行计划 涵盖的扫描 # 概述 索引支持在MongoDB...官网文档 (opens new window) 了解: MongoDB索引使用B树数据结构(确切的说是B-Tree,MySQL是B+Tree) # 索引的类型 # 单字段索引 MongoDB支持在文档的单个字段上创建用户定义的升序...# 其他索引 地理空间索引(Geospatial Index)、文本索引(Text Indexes)、哈希索引(Hashed Indexes)。...地理空间索引(Geospatial Index) 为了支持对地理空间坐标数据的有效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。...另外,MongoDB支持几种不同的索引类型,包括文本、地理空间和哈希索引。 options document 可选。包含一组控制索引创建的选项的文档。有关详细信息,请参见选项详情列表。

1.4K20

MongoDB 复合索引

MongoDB支持复合索引,即将多个键组合到一起创建索引。该方式称为复合索引,或者也叫组合索引,该方式能够满足多键值匹配查询使用索引的情形。其次复合索引在使用的时候,也可以通过前缀法来使用索引。...MongoDB中的复合索引与关系型数据库基本上一致。在关系型数据库中复合索引使用的一些原则同样适用于MongoDB。本文主要描述MongoDB复合索引。..."books" : [ "JS", "C++", "EXTJS", "MONGODB...对于单键索引,其顺序并不是特别重要,因为MongoDB可以在任一方向遍历索引 对于复合索引,按何种方式排序能够决定该索引在查询中能否被使用到。...: 1 } { item: 1, location: 1 } 在MongoDB中,下列查询过滤条件情形中,索引将会被使用到 item字段

2.9K10

MongoDB 索引详解

1.4地理空间索引(Geospatial Index): 针对地理空间坐标数据创建索引,类似于oracle geometry类型。...2.2部分索引(Partial Indexes)(3.2版本新增) 对集合中指定的筛选器表达式筛选后的部分集合进行创建索引,优点:减少了存储空间,提高的查询效率 2.3 稀疏索引 索引只保存一定条目的索引属性值...,数据块的迁移将会失败; 3.6 一个collections最多能够有64个索引; 3.7 针对索引的全名,包含命名空间和“.”分隔符,如:....$,最多不超过128 characters; 3.8 针对复合索引,包含的索引属性不能够超过31个属性; 3.9 查询不能够同时使用文本索引和地理空间索引(Queries cannot...use both text and Geospatial Indexes); 3.11 包含2d sphere属性的索引,只能够针对地理空间属性; 3.12 如果通过覆盖索引查询得到的属性值是NaN

86720

优化MongoDB复合索引

对于一个命中索引的查询,nscanned 是Mongodb索引范围内扫描的索引的条数。...此外,如果索引中的匿名记录部分很少被用到,它就可以从内存中置换到硬盘上,从而为更热点的索引让出内存空间。 然而从反面来说,一个包含两个字段的索引会比只包含一个字段的索引占用更多的内存。...MongoDB是如何在多个索引中选择最合适的哪个呢?...可是,如果没有任何索引是最优索引呢,MongoDB会如何处理? 在这种情况下,MongoDB会把所有和查询模式相关的索引都拿出来。...需要有一个索引,能让MongoDB快速定位到非匿名区,并以rating字段由大到小的顺序扫描该区。 ? MongoDB会使用这个索引吗?并不会,因为这个索引无法在查询优化器的选择中胜出。

2.7K30

MongoDB复合索引详解

摘要: 对于MongoDB的多键查询,创建复合索引可以有效提高性能。 什么是复合索引? 复合索引,即Compound Index,指的是将多个键组合到一起创建索引,这样可以加速匹配多个键的查询。...IXSCAN即索引扫描,使用的是age索引;FETCH即根据索引去查询文档,查询的时候需要使用name进行过滤。...定位MongoDB性能问题 随着接收的错误数据不断增加,我们Fundebug已经累计处理3.5亿错误事件,这给我们的服务不断带来性能方面的挑战,尤其对于MongoDB集群来说。...对于生产数据库,配置profile,可以记录MongoDB的性能数据。执行以下命令,则所有超过1s的数据库读写操作都会被记录下来。...参考 MongoDB 复合索引 MongoDB文档:Compound Indexes 版权声明: 转载时请注明作者Fundebug以及本文地址: https://blog.fundebug.com/2018

1.2K40

MongoDB(六)—-MongoDB索引的额外属性

语法格式: db.COLLECTION_NAME.createIndex({ 索引键名:排序规则},{ sparse:true}) 注意:从MongoDB 3.2开始,MongoDB提供了创建部分索引的选项...部分索引提供了稀疏索引功能的超集。如果您使用的是MongoDB 3.2或更高版本,则部分索引应优先于稀疏索引。...4.覆盖索引查询 官方的MongoDB的文档中说明,覆盖查询是以下的查询: 1.所有的查询字段是索引的一部分 2.所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, MongoDB...1,_id:0}) 也就是说,对于上述查询,MongoDB的不会去数据库文件中查找。...5.查询计划 在MongoDB中通过explain()函数启动执行计划,我们可以使用查询计划分析索引的使用情况,可通过查看详细的查询计划来决定如何优化。

88520

MongoDB系列6:MongoDB索引的介绍

2、MongoDB支持的索引类型 在MongoDB主要支持以下几种索引类型: ·单列索引 ·复合索引 ·多键索引 ·全文索引 ·地理空间索引 ·哈希索引 2.1 单列索引MongoDB中,每个集合都会默认创建一个唯一索引列...2.5 地理空间索引 随着移动设备的应用的爆发式增长,有一种查询变得越来越流行:找到离当前位置最近的N个场所。MongoDB为坐标平面查询提供了专门的索引,称作地理空间索引。...地理空间索引分2dsphere索引和2d索引。 2.5.1 2dsphere索引 2dsphere索引支持GeoJSON地理空间格式或传统的坐标对格式数据存储。...2d索引;而地理空间查询操作(例如,$near和$geoWithin)允许集合具有多个地理空间索引。...可以配置高达32位精度的地理空间索引索引精度不会影响查询精度。实际的网格坐标总是用于最终的查询处理。降低精度的好处使插入操作使用更少空间和处理开销较低。

2.8K101
领券