MongoDB索引管理——创建索引,查看索引,删除索引,重建

  

先给用户集合插入两条记录,然后用用户集合来进行索引管理的演示:

  
 <代码>比;user1={“名称”:“李明”,“年龄”:20,“性别”:“F”}
  {" name ":“李明”、“年龄”:20,“性别”:“F”}
  比;db.users.insert (user1)
  WriteResult ({“nInserted”: 1})
  比;user2={“名称”:“zhangsan”,“年龄”:25岁的“性别”:“F”}
  {" name ": " zhangsan”、“年龄”:25岁的“性别”:“F”}
  比;db.users.insert (user1)
  WriteResult ({“nInserted”: 1})
  比;db.users.count ()
  2  
  

创建索引:

  

mongodb使用方法createIndex()和ensureIndex()方法来创建索引,前者用于3.0及以上版本,后者用于3.0以下版本。
语法:
db.COLLECTION_NAME.ensureIndex(键[选项])
键:要建立索引的参数列表。如:{关键:1},其中关键表示字段名,1表示升序排序,也可使用使用数字1降序。
选项:可选参数,表示建立索引的设置。可选值如下:
背景,布尔,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值为假的。
独特,布尔,创建唯一索引。默认值false。
名称字符串,指定索引的名称。如果未指定,mongodb会生成一个索引字段的名称和排序顺序串联。
partialFilterExpression文档。如果指定,mongodb只会给满足过滤表达式的记录建立索引。
稀疏,布尔,对文档中不存在的字段数据不启用索引。默认值是错误的。
expireAfterSeconds,整数,指定索引的过期时间
storageEngine,文档,允许用户配置索引的存储引擎

  
 <代码>比;db.users.createIndex ({" name ": 1})
  {
  “createdCollectionAutomatically”:假的,
  “numIndexesBefore”: 1、
  “numIndexesAfter”: 2
  “ok”: 1
  } 
  

例2:给名字字段创建倒序索引

  
 <代码>比;db.users.createIndex ({" name ": 1})
  {
  “createdCollectionAutomatically”:假的,
  “numIndexesBefore”: 2
  “numIndexesAfter”: 3,
  “ok”: 1
  } 
  

例3:给姓名、年龄字段创建组合索引

  
 <代码>比;db.users.createIndex({“名称”:1、“年龄”:1})
  {
  “createdCollectionAutomatically”:假的,
  “numIndexesBefore”: 3,
  “numIndexesAfter”: 4
  “ok”: 1
  } 
  

例4:在后台给年龄字段创建索引

  
 <代码>比;db.users.createIndex({年龄:1}、{背景:1})
  {
  “createdCollectionAutomatically”:假的,
  “numIndexesBefore”: 4
  “numIndexesAfter”: 5
  “ok”: 1
  } 
  

在后台创建索引的原因:
在前台创建索引期间会锁定数据库,会导致其它操作无法进行数据读写,在后台创建索引是,会定期释放写锁,从而保证其它操作的运行,但是后台操作会在耗时更长,尤其是在频繁进行写入的服务器上。

  

查看索引:

  

MongoDB提供的查看索引信息的方法:
getIndexes()方法可以用来查看集合的所有索引,
getIndexKeys()方法查看索引键。
totalIndexSize()查看集合索引的总大小,
getIndexSpecs()方法查看集合各索引的详细信息
例1:getIndexes()的用法

  
 <代码>比;db.users.getIndexes ()
  (
  {
  “v”: 1、
  “关键”:{
  “_id”: 1
  },
  “名称”:“_id_”,
  “ns”:“test1.users”
  },
  {
  “v”: 1、
  “关键”:{
  “名称”:1
  },
  “名称”:“name_1”,
  “ns”:“test1.users”
  },
  {
  “v”: 1、
  “关键”:{
  “名称”:1
  },
  “名称”:“name_-1”,
  “ns”:“test1.users”
  },
  {
  “v”: 1、
  “关键”:{
  “名称”:1、
  “年龄”:1
  },
  “名称”:“name_1_age_1”,
  “ns”:“test1.users”
  },
  {
  “v”: 1、
  “关键”:{
  “年龄”:1
  },
  “名称”:“age_1”,
  “ns”:“test1.users”,
  “背景”:1
  }
  ) 
  

例2:getIndexKeys()的用法

  
 <代码>比;db.users.getIndexKeys ()
  (
  {
  “_id”: 1
  },
  {
  “名称”:1
  },
  {
  “名称”:1
  },
  {
  “名称”:1、
  “年龄”:1
  },
  {
  “年龄”:1
  }
  ) 
  

例3:totalIndexSize()的用法

  
 <代码>比;db.users.totalIndexSize ()
  81920年 
  

例4:getIndexSpecs()的用法

  
 

MongoDB索引管理——创建索引,查看索引,删除索引,重建