MongoDB 索引

ps:大概有半个月木有更新了,因为前一阶段的出差和这几天突然来的项目。导致上网时间急剧降低,实在是sorry,以后预计会好一点。

索引通常可以极大的提高查询的效率。假设没有索引。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() 接收可选參数。可选參数列表例如以下:

Parameter Type Description
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 的选项。让创建工作在后台运行。

菜鸟的mongoDB学习---(六)MongoDB 索引的更多相关文章

  1. MongoDB学习笔记:MongoDB 数据库的命名、设计规范

    MongoDB学习笔记:MongoDB 数据库的命名.设计规范     第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ ...

  2. mongodb学习笔记之索引(转)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  3. mongodb学习(六)索引

    准备工作: 先插入100万条数据 for(i=0;i<=1000000;i++){ db.users.insert({ "i":i, "username" ...

  4. MongoDB学习总结(四) —— 索引的基本用法

    说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...

  5. MongoDB学习笔记-04 索引

    索引是用来加速查询的.有了索引之后,数据库不必进行全表扫描,只需先在索引中查找,再根据找到的索引查找数据.MongoDB的索引几乎和传统关系型数据库一样. 创建索引 创建索引是在相应的集合中使用ens ...

  6. MongoDB学习 (六):查询

    本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用 ...

  7. [转载]MongoDB学习 (六):查询

    本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用 ...

  8. 【MongoDB学习之四】索引 聚合 备份与恢复 监控

    环境 MongoDB 4.0 CentOS 6.5_x64 一.索引语法ensureIndex()方法基本语法格式如下所示:>db.COLLECTION_NAME.ensureIndex({KE ...

  9. MongoDB 学习笔记之 索引

    索引: db.media.createIndex({"Tracklist": 1}) 1表示升序 -1表示降序 我们要着重看一下对数组创建索引的情况. 构建一个集合:db.medi ...

  10. MongoDB 学习笔记之 索引选项和重建索引

    索引选项: {background:true}在后台创建索引,索引在构建过程中,其他客户端仍然可以查询数据,不会阻塞. db.comments.createIndex({anonymous: 1},{ ...

随机推荐

  1. PHP中数据类型转换的三种方式

    PHP中数据类型转换的三种方式 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: 1.(int).(integer):转换成整形2.(float).(double).(real):转换成 ...

  2. 建模:3D建模

    ylbtech-建模:3D建模 “3D建模”通俗来讲就是通过三维制作软件通过虚拟三维空间构建出具有三维数据的模型.3D建模大概可分为:NURBS和多边形网格. NURBS对要求精细.弹性与复杂的模型有 ...

  3. openssl https证书

    今天摸索了下 HTTPS 的证书生成,以及它在 Nginx 上的部署.由于博客托管在 github 上,没办法部署证书,先记录下,后续有需要方便快捷操作.本文的阐述不一定完善,但是可以让一个初学者了解 ...

  4. LeetCode Weekly Contest 18B

    1. 496. Next Greater Element I 暴力的话,复杂度也就1000 * 1000 = 1e6, 在1s的时限内完全可以. 当然,有许多优化方法,利用stack维护递减序列的方法 ...

  5. 前端面试基础-html篇之CSS3新特性

    CSS3的新特性(个人总结)如下 过度(transiton) 动画(animation) 形状转换 transform:适用于2D或3D转换的元素 transform-origin:转换元素的位置(围 ...

  6. Java中从控制台输入数据的几种常用方法(转转)

    原文博客地址:https://www.cnblogs.com/SzBlog/p/5404246.html 一.使用标准输入串System.in  //System.in.read()一次只读入一个字节 ...

  7. vuex的状态管理模式

    1.store.js Vuex 通过 store 选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)) state:存放数据. mutations:提交状态 ...

  8. 谈谈c++中继承中的虚函数

      c++继承中的虚函数 c++是一种面向对象的编程语言的一个很明显的体现就是对继承机制的支持,c++中继承分很多种,按不同的分类有不同分类方法,比如可以按照基类的个数分为多继承和单继承,可以按照访问 ...

  9. 提示“CD/DVD找不到媒体所需的驱动”

    最近在帮我姐安装win7系统时提 示“CD/DVD找不到媒体所需的驱动”,我用的是U盘安装方式,觉得奇怪,那个镜像文件我已经安装过几十次都没有出错,显然是不会有错的.但是新买的电 脑又不会太大的问题, ...

  10. 运行于Windows内建账户下的服务访问映射网络驱动器的方法

    Windows服务如果是运行在本地系统帐户下或本地服务帐户下,它只能访问这个账户自己创建的映射驱动器,UNC路径访问则不受次限制. LocalService Account (NT AUTHORITY ...