mongodb基础2

索引

概念不多做介绍,需要提的是mongodb是b树。
索引的类型
mongodb的索引有很多种
单字段索引:常见的索引
复合索引:多字段的索引
地理空间索引(Geospatial Index):为支持地理空间坐标数据的有效查询,mongodb提供两种特殊索引:

  1. 返回结果使用平面几何的二维索引
  2. 返回结果使用球面几何的二维球面索引

文本索引(Text Index):支持在集合中搜索字符串内容。这些文本索引不存储特定语言的停止词(例如“the”、“a”、“or”),而将集合中的词作为词干,只存储根词。
mongodb的文本索引性能并不高,用的话还是es之类成熟的搜索引擎比较好
哈希索引(Hashed Index):为支持基于散列的分片提供的索引类型。他对字段值的散列进行索引。这些索引范围在其范围内的值分布更加随机。只支持相等匹配,不支持基于范围的查询。


查看索引

db.collection.getIndexes()

结果示例:
结果
v:索引引擎的版本号
key:有索引的字段。1代表是升序的方式,-1是降序
name:索引的名称
ns:namespace,数据库.集合

创建索引

//3.0版本之前,之后还可以用这个,不过效果一样
db.collection.ensureIndex(keys , options)
//3.0版本之后
db.collection.createIndex(keys , options)
ParameterTypeDescription
keysdocument包含字段和值得文档,字段是索引键,值是索引类型。
optionsdocument可选,包含一组控制索引创建的选项的文档

options的列表:

ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其他数据库操作,这个可制定以后台的方式创建。默认为false
uniqueBoolean索引是否是唯一索引。默认为false
nameString索引名称。如果未指定,就是字段名和排序生成一个
dropDupsBoolean3.0+版本已废弃。建立唯一索引时是否删除重复记录。默认为false
sparseBoolean对文档中不存在的字段数据不启用索引。如果为true,在索引字段中不会查出不包含对应字段的文档。默认为false
expireAfterSecondsInteger制定一个以秒为单位的数值,完成TTL设定,设定集合的生存时间
vindex version索引版本号。默认取决于mongodb创建索引时运行的版本
weightsdocument权重,数值在1到99,999之间,表示该索引的权重
default_languageString对于文本索引,改参数决定停用词、词干和词器的规则的列表。默认是英文
language_overrideString对于文本索引,改参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值是language

单字段索引创建

db.comment.createIndex({userid:1})

复合索引创建

db.comment.createIndex({userid:1,nickname:-1})

移除索引

//移除指定索引
db.collection.dropIndex(index)
//移除所有索引
db.collection.dropIndexes()
ParameterTypeDescription
indexString or document指定要删除的索引。可以通过索引名称或索引规范文档指定索引。如果要删除文本索引,要指定索引名称

示例:

db.comment.dropIndex("userid_1")
//移除comment集合中userid字段上的升序索引
db.comment.dropIndex({userid:1})

索引的使用

执行计划
如果想知道建立的索引是否有效,效果如何,都需要查看执行计划。类似mysql的explain
语法:

db.collection.find(query , options).explain(options)

例如:

db.comment.find({userid:"1001"}).explain()

涵盖的查询
如果查询的字段只有索引字段时,mongodb会直接从索引里面拿结果,而不会扫描任何文档或将文档带入内存。这种方式效率很高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值