首页 > 数据库 >MongoDB 索引

MongoDB 索引

时间:2024-03-01 10:55:19浏览次数:17  
标签:ensureIndex 创建 索引 background MongoDB 默认值 true

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构


ensureIndex() 方法

MongoDB使用 ​ensureIndex()​ 方法来创建索引。

语法

ensureIndex()​方法基本语法格式如下所示:

>db.COLLECTION_NAME.ensureIndex({KEY:1})

语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。

实例

>db.mycol.ensureIndex({"title":1})
>

ensureIndex() ​方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。

>db.mycol.ensureIndex({"title":1,"description":-1})
>

ensureIndex() ​接收可选参数,可选参数列表如下:

ParameterTypeDescription
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

实例

在后台创建索引:

db.values.ensureIndex({open: 1, close: 1}, {background: true})

通过在创建索引时加background:true 的选项,让创建工作在后台执行

标签:ensureIndex,创建,索引,background,MongoDB,默认值,true
From: https://www.cnblogs.com/wangtiantian/p/18046499

相关文章

  • MySQL 索引
    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索......
  • SQL Server中常见的索引类型
    1.聚集索引(ClusteredIndex):-聚集索引确定表中数据的物理存储顺序,并且表中只能有一个聚集索引。-聚集索引决定了表的物理排序方式,并且通常基于主键列或唯一约束。2.非聚集索引(NonclusteredIndex):-非聚集索引不会改变表中数据的物理存储顺序,而是创建一个独立的索引结......
  • 索引的访问类型
    创建表:CREATETABLEsingle_table(idINTNOTNULLAUTO_INCREMENT,key1VARCHAR(100),key2INT,key3VARCHAR(100),key_part1VARCHAR(100),key_part2VARCHAR(100),key_part3VARCHAR(100),common_fieldVARCHAR(100),PRIMARYKEY(id),KEYidx_key1(key1),UN......
  • 记录级别索引:Hudi 针对大型数据集的超快索引
    介绍索引是一个关键组件,有助于Hudi写入端快速更新和删除,并且它在提高查询执行方面也发挥着关键作用。Hudi提供了多种索引类型,包括全局变化的Bloom索引和Simple索引、利用HBase服务的HBase索引、基于哈希的Bucket索引以及通过元数据表实现的多模态索引。索引的选择取决于表大......
  • PNG格式PNG(Portable Network Graphics)位图图形文件格式 无损压缩的图片格式,支持索引
    PNG(PortableNetworkGraphics)是一种位图图形文件格式,它是一种无损压缩的图片格式,支持索引、灰度、RGB和RGBA等多种颜色模式。PNG格式支持多种颜色模式,包括以下几种:索引色模式(IndexedColor):索引色模式使用一个颜色索引表来存储图像中使用的颜色。每个像素使用索引值来指定......
  • [数据库] 使用索引(2): mongoDB
    mongoDB的索引mongodb的索引和mysql基本类似,也是默认主键(相当于mongo中的_id字段)为索引,进行索引排序etc.索引分类单键索引将一个字段作为索引,默认_id,也可以将其他字段作为索引db.collection.createIndex({year:1})其中value为1则是正序,为-1则是倒序复合索引......
  • [数据库] 使用索引(1): MySQL
    索引indexing索引是用来提高查询效率的,会将数据按照被设为索引的字段进行排序,这样根据该字段查找的时候更快数据库在没有索引的情况下,默认进行全文搜索,这意味着所有数据都会被遍历到索引和数据文件一样存储在磁盘上,因此过多的索引会占用空间;索引和数据文件的关联......
  • 刘铁猛C#学习笔记11 索引器、常量
    一、索引器[]概述使一个对象可以像数组一样用方括号[]去访问其元素ex:字典的声明 1.索引器的声明首先像上文那样声明一个字典Dictionary<,>在VS中输入indexer,然后敲两下tab就能得到:(按下tab可以跳到下一个可编辑项上)第一个类型参数为返回值的类型,第二个类型参数为......
  • mysql面试高频问题---聚簇索引与非聚簇索引
    聚簇索引与非聚簇索引1.问题?什么是聚簇索引与非聚簇索引什么是聚集索引?什么是二级索引(非聚集索引)?什么是回表?2.聚簇索引聚集索引选取规则:1.如果存在主键,主键索引就是聚集索引。2.如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。3.如果表没有主键,或没有......
  • mysql面试高频问题---覆盖索引
    覆盖索引1.问题覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。判断下面的SQL哪些是覆盖索引,为什么?select*fromtb_userwhereid=1是,因为根据id查询的,id默认是主键索引,就是聚簇索引,聚簇索引中对应的是整行的记录selectid,namefromtb_us......