MongoDB之索引的操作

首先上官方
官方索引连接地址

说明

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

原理

在这里插入图片描述从根本上说,MongoDB中的索引与其他数据库系统中的索引类似。MongoDB在集合层面上定义了索引,并支持对MongoDB集合中的任何字段或文档的子字段进行索引。

索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段的值排序。索引条目的排序支持高效的相等匹配和基于范围的查询操作。另外,MongoDB可以使用索引中的排序返回排序结果。

默认id索引

MongoDB在创建集合时在_id字段上创建唯一的索引。_id索引防止客户端插入两个_id字段值相同的文档。不能删除_id字段上的索引。

注意:
在分片集群中,如果您不使用_id字段作为分片键,那么您的应用程序必须确保_id字段值的唯一性,以防止出错。这通常是通过使用标准的自动生成的ObjectId来完成的。

createIndex() 方法

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

db.集合名称.createIndex(keys, options)
db.集合名称.createIndex('title':1, 'descripition':-1)

说明:
key:为要创建索引的字段,1为按照升序创建索引。

createIndex() 接收可选参数,可选参数列表如下:
在这里插入图片描述
在这里插入图片描述

查看集合索引

db.集合名称.getIndexes()

在这里插入图片描述

查看集合索引大小

db.集合名称.totalIndexSize()

在这里插入图片描述

删除所有集合索引

db.集合名称.dropIndexes()

删除集合指定索引

db.集合名称.dropIndex('')

在这里插入图片描述

复合索引

索引由多个字段共同维护的。和关系型数据库是一模一样的,

db.集合名称.createIndex('title':1, 'descripition':-1)
  • 对于两个字段的索引,当用这两个字段作为查询条件时,无论一共有多少个查询条件 (大于或者等于两个查询条件),无论顺序怎么排列 (倒序,正序,还是中间插入其他的)都会用的这个索引
  • 但是 如果只查询一个字段的时候,如果是第一个字段 (比如name做查询条件)是可以用到这个索引的, 如果用第二参数作为查询条件(age)是无法用到这个索引的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值