关于MongoDB索引管理-索引的创建、查看、删除操作详解

  • A+
所属分类:MongoDB

索引是进步查询查询效力最有用的手腕。索引是一种特殊的数据布局,索引以易于遍历的情势存储了数据的部门内容(如:一个特定的字段或一组字段值),索引会按必定规矩对存储值进行排序,并且索引的存储地位在内存中,地点从索引中检索数据会异常快。假如没有索引,MongoDB必需扫描聚拢中的每一个文档,这种扫描的效力异常低,尤其是在数据量较年夜时。

1. 创立/重修索引

MongoDB全新创立索引使用ensureIndex()办法,对付已存在的索引可以使用reIndex()进行重修。

1.1 创立索引ensureIndex()

MongoDB创立索引使用ensureIndex()办法。

语法布局

db.COLLECTION_NAME.ensureIndex(keys[,options])

keys,要树立索引的参数列表。如:{KEY:1},此中key表现字段名,1表现升序排序,也可使用使用数字-1降序。
options,可选参数,表现树立索引的设置。可选值如下:
background,Boolean,在后台树立索引,以便树立索引时不阻止其他数据库运动。默认值 false。
unique,Boolean,创立独一索引。默认值 false。
name,String,指定索引的名称。假如未指定,MongoDB会天生一个索引字段的名称和排序次序串联。
dropDups,Boolean,创立独一索引时,假如呈现反复删除后续呈现的雷同索引,只保存第一个。
sparse,Boolean,对文档中不存在的字段数据不启用索引。默认值是 false。
v,index version,索引的版本号。
weights,document,索引权重值,数值在 1 到 99,999 之间,表现该索引相对付其他索引字段的得分权重。

如,为聚拢sites树立索引:

> db.sites.ensureIndex({name: 1, domain: -1})
{
 "大众createdCollectionAutomatically"大众 : false,
 "大众numIndexesBefore"大众 : 1,
 "大众numIndexesAfter"大众 : 2,
 "大众ok"大众 : 1
}

注意:1.8版本之前创立索引使用createIndex(),1.8版本之后已移除该办法

1.2 重修索引reIndex()

db.COLLECTION_NAME.reIndex()

如,重修聚拢sites的所有索引:

> db.sites.reIndex()
{
 "大众nIndexesWas"大众 : 2,
 "大众nIndexes"大众 : 2,
 "大众indexes"大众 : [
  {
  "大众key"大众 : {
 "大众_id"大众 : 1
  },
  "大众name"大众 : "大众_id_"大众,
 "大众ns"大众 : "大众newDB.sites"大众
 },
 {
  "大众key"大众 : {
 "大众name"大众 : 1,
 "大众domain"大众 : -1
  },
  "大众name"大众 : "大众name_1_domain_-1"大众,
  "大众ns"大众 : "大众newDB.sites"大众
 }
 ],
 "大众ok"大众 : 1
}

2. 查看索引

MongoDB提供了查看索引信息的办法:getIndexes()办法可以用来查看聚拢的所有索引,totalIndexSize()查看聚拢索引的总年夜小,db.system.indexes.find()查看数据库中所有索引信息。

2.1 查看聚拢中的索引getIndexes()

db.COLLECTION_NAME.getIndexes()

如,查看聚拢sites中的索引:

>db.sites.getIndexes()
[
 {
 "大众v"大众 : 1,
 "大众key"大众 : {
  "大众_id"大众 : 1
 },
 "大众name"大众 : "大众_id_"大众,
 "大众ns"大众 : "大众newDB.sites"大众
 },
 {
 "大众v"大众 : 1,
 "大众key"大众 : {
  "大众name"大众 : 1,
  "大众domain"大众 : -1
 },
 "大众name"大众 : "大众name_1_domain_-1"大众,
 "大众ns"大众 : "大众newDB.sites"大众
 }
]

2.2 查看聚拢中的索引年夜小totalIndexSize()

db.COLLECTION_NAME.totalIndexSize()

如,查看聚拢sites索引年夜小:

> db.sites.totalIndexSize()
16352

2.3 查看数据库中所有索引db.system.indexes.find()

db.system.indexes.find()

如,当前数据库的所有索引:

> db.system.indexes.find()

3. 删除索引

不在必要的索引,我们可以将其删除。删除索引时,可以删除聚拢中的某一索引,可以删除全体索引。

3.1 删除指定的索引dropIndex()

db.COLLECTION_NAME.dropIndex("大众INDEX-NAME"大众)

如,删除聚拢sites中名为"大众name_1_domain_-1"大众的索引:

> db.sites.dropIndex("大众name_1_domain_-1"大众)
{ "大众nIndexesWas"大众 : 2, "大众ok"大众 : 1 }

3.3 删除所有索引dropIndexes()

db.COLLECTION_NAME.dropIndexes()

如,删除聚拢sites中所有的索引:

> db.sites.dropIndexes()
{
 "大众nIndexesWas"大众 : 1,
 "大众msg"大众 : "大众non-_id indexes dropped for collection"大众,
 "大众ok"大众 : 1
}

以上内容即为MongoDB索引治理包含索引的创立、查看索引、删除索引各方面的敕令及使用办法,愿望年夜家有所赞助

您可能感兴致的文章:

MongoDB索引使用详解MongoDB的根基查询和索引操作办法总结MongoDB机能篇之创立索引,组合索引,独一索引,删除索引和explain执行方案MongoDB中创立索引必要注意的事变pymongo给mongodb创立索引的简单实现办法MongoDB查询字段没有创立索领导致的衔接超时非常解案例分享MongoDB进修条记(六) MongoDB索引用法和效力阐发mongodb处置中文索引与查找字符串详解pymongo为mongodb数据库添加索引的办法MongoDB数据库中索引(index)详解Mongodb索引的优化MongoDB入门教程之索引操作浅析MongoDB教程之索引先容MongoDB的索引MongoDB数据库中索引和explain的使用教程mongodb索引常识_动力节点Java学院整顿MongoDB TTL索引的实例详解基于MongoDB数据库索引构建环境周全阐发

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: