首页 > 数据库 >MongoDB 创建索引

MongoDB 创建索引

时间:2023-05-11 10:46:10浏览次数:40  
标签:默认值 创建 db 索引 background MongoDB createIndex

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
createIndex() 方法
MongoDB使用 createIndex() 方法来创建索引。
注意在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。
语法格式
createIndex()方法基本语法格式如下所示:

db.collection.createIndex(keys, options)

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

 

>db.col.createIndex({"title":1})

 

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

db.col.createIndex({"title":1,"description":-1})
>

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

参数类型描述
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。“background” 默认值为false。
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 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.createIndex({open: 1, close: 1}, {background: true})

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

标签:默认值,创建,db,索引,background,MongoDB,createIndex
From: https://www.cnblogs.com/jelly12345/p/17390335.html

相关文章

  • 在 IDEA 中创建 Java Web 项目的方式(详细步骤教程)
    开发环境以下是我的开发环境JDK1.8Maven3.6.3Tomcat9.0IDEA2019(2019无所畏惧,即使现在已经2023年了哈哈哈)最原始的JavaWeb项目下面的内容可能会因IDEA版本不同,而有些选项不同,但是大同小异。1.打开IDEA点击CreateNewProject2.点击JavaEnterprise......
  • shelll脚本创建一个文件,并写入内容
    下面是一个简单的shell脚本,它可以创建一个名为"hello.txt"的文件,并向其中写入"helloworld"#!/bin/bash#创建文件touchhello.txt#向文件写入内容cathello.txt|tr-d'\n'>/dev/nullecho"helloworld"解释一下脚本的操作:首先,使用touch命令创建一......
  • MySQL创建经典教师学生表并插入测试数据
    一、表字段学生表Student(s_id,s_name,s_birth,s_sex):学生编号、姓名、年月、性别课程表Course(c_id,c_name,t_id):课程编号、课程名称、教师编号教师表Teacher(t_id,t_name):教师编号、教师姓名成绩表Score(s_id,c_id,s_score):学生编号、课程编号、分数二、创建表1......
  • V$INDEX_USAGE_INFO中找不到监控索引数据的尴尬经历
    在一个Oracle12.1实例中,想监控一个表的索引使用情况,在system用户下执行了下面脚本以及输出的监控索引脚本后,发现V$OBJECT_USAGE下一直没有对应的记录(在system用户下查询)SELECT   'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' MONITORING USAGE;'FROM   DBA_INDEXESWHER......
  • Elsa 创建并启动一个工作流
    以前写了一半,Elsa3.0重新进行了设计,又不想写了,唉,2023-04-5已过时,最新版请参考Elsa3.0,3.0中相关重新进行了设计   前言:学习而已,初见Elsa时,感觉很奇妙,到底是什么样的思想才能够设计出这么巧妙的程序...长风破浪会有时,直挂云帆济沧海。 学习过程记录下......
  • python创建虚拟环境
    创建虚拟环境所用包virtualenv查看是否有虚拟环境virtualenv--version安装虚拟环境命令pipinstallvirtualenv创建虚拟环境(.venv是环境名字,可以随意取)virtualenv.venv激活虚拟环境cd.venv/Scripts目录下执行activate执行成功后即可此时即可安装第三方库或者运......
  • 【pytorch】理解张量,了解张量的创建和操作
    深度学习的核心是卷积,卷积的核心是张量(Tensor)理解TensorTensor可以简单理解为是标量、向量、矩阵的高维扩展。你可以把张量看作多维数组,但相较于ndarray,Tensor包含了grad、requires_grad、grad_fn、device等属性,是为服务于神经网络而设计的类型,标量可以看作是零维张量、......
  • 【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
    问题描述在中国区Azure上,使用MediaService服务,想要使用.NET的代码来对上传视频创建缩略图(Thumbnail)。通过官网文档(https://docs.azure.cn/zh-cn/media-services/latest/samples/samples-encoding-reference#create-a-thumbnail-sprite)下载.NET示例,配置appsettings.json......
  • ES-查询所有索引
     localhost:9200/_all查询: 结果:3个Index ......
  • elastic search 索引增删改查
      DELETE/product?pretty 删除索引PUT/product:创建索引GET/product/_search查询product索引下的所有信息PUT/product/_doc/1新增一条id为1的数据GET/product/_doc/1 查询product(类似表)id为1的数据(类似一行数据)POST/product/_update/1更新productid为1的数......