- A+
索引是进步查询查询效力最有用的手腕。索引是一种特殊的数据布局,索引以易于遍历的情势存储了数据的部门内容(如:一个特定的字段或一组字段值),索引会按必定规矩对存储值进行排序,并且索引的存储地位在内存中,地点从索引中检索数据会异常快。假如没有索引,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数据库索引构建环境周全阐发