MongoDB索引

本文详细介绍了在MongoDB中管理索引的方法,包括创建单字段和复合索引,设置索引选项,移除索引,以及通过执行计划评估索引性能。
摘要由CSDN通过智能技术生成

1. 查看索引

语法 :

db.集合名称.getIndexes()

2. 创建索引

语法 :

db.集合名称.createIndex(keys, options)

如:

  • 单字段索引示例:对 userid 字段建立索引,升序:
db.集合名称.createIndex({userid:1})
  • 复合索引:对 userid (升序)和 nickname (降序),同时建立复合(Compound)索引:
db.集合名称.createIndex({userid:1,nickname:-1})

参数解析:

  • keys : 包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请 指定值1;对于降序索引,请指定值-1。比如: {字段:1或-1} ,其中1 为指定按升序创建索引,如果你 想按降序来创建索引指定为 -1 即可。另外,MongoDB支持几种不同的索引类型,包括文本、地理空 间和哈希索引。
  • options : 可选。包含一组控制索引创建的选项的文档。有关详细信息,请参见选项详情列表。

options(更多选项)列表:

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

3. 移除索引

可以移除指定的索引,和移除所有索引

a. 指定索引的移除

语法:

db.集合名称.dropIndex(index)

参数解析:

  • index:指定要删除的索引。可以通过索引名称或索引规范文档指定索引。若要删除文本索引,请指定 索引名称。

如:

  • 删除集合中 userid 字段上的升序索引:
db.集合名称.dropIndex({userid:1})

b. 移除所有索引

db.集合名称.dropIndexes()

4. 索引的使用

a. 执行计划

分析查询性能(Analyze Query Performance)通常使用执行计划(解释计划、Explain Plan)来查看查询的情况,如查询耗费的时间、是否基于索引查询等。

那么,通常,我们想知道,建立的索引是否有效,效果如何,都需要通过执行计划查看。

语法:

db.集合名称.find(query,options).explain(options)

如:

  • 查看根据userid查询数据的情况:
db.集合名称.find({userid:"1003"}).explain()
  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值