当前位置:嗨网首页>书籍在线阅读

09-重建索引

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

22.2.3 重建索引

管理MongoDB数据库中集合的索引 本节介绍如何给示例数据库的一个集合添加和删除索引。这里介绍的方法也适用于在其他数据库的集合中添加、显示和删除索引。请执行下面的步骤,在示例数据库的一个集合中添加和删除索引。 1.确保启动了MongoDB服务器。 2.确保运行了生成数据库words的脚本文件code/hour05/generate_words.js。 3.使用下面的命令启动MongoDB shell: 4.使用下面的命令切换到数据库words: 5.使用下面的命令显示数据库words中集合word_stats的索引,该命令后面是其输出: 6.使用下面的命令添加一个新索引,它基于字段first(升序)和size(降序): 7.使用下面的命令显示数据库words中集合word_stats的索引myIndex,该命令后面是其输出: 8.使用下面的命令删除这个新添加的索引: 9.使用下面的命令核实新索引myIndex已删除,该命令后面是其输出: ▲

与任何实现索引的数据库一样,您创建的索引也可能效果不佳,或者因受损而不再管用。在这种情况下,可使用Collection对象的方法reIndex()来重建索引。

方法reIndex()删除并重建集合的所有索引。

警告:

重建索引操作将占用大量系统资源,请务必在非高峰期间这样做。另外,_id索引的重建是在前台进行的,因此在该索引重建完毕前,不能执行写入操作。 *

▼ Try It Yourself

mongo
use words
db.word_stats.getIndexes()
[     {       "v" : 1,
                 "key" : {"_id" : 1},
                 "ns" : "words.word_stats",
                 "name" : "_id_" },
      {        "v" : 1,
                 "key" : {"word" : 1},
                 "unique" : true,
                 "ns" : "words.word_stats",
                 "name" : "word_1" } ]
db.word_stats.ensureIndex({first:1, size: -1},
                               {background:true, name: "myIndex"})
db.word_stats.getIndexes()
[     {      "v" : 1,
                 "key" : {"_id" : 1},
                 "ns" : "words.word_stats",
                 "name" : "_id_"},
        {       "v" : 1,
                 "key" : {"word" : 1},
                 "unique" : true,
                 "ns" : "words.word_stats",
                 "name" : "word_1"},
       {        "v" : 1,
                 "key" : { "first" : 1, "size" : -1},
                 "ns" : "words.word_stats",
                 "name" : "myIndex",
                 "background" : true } ]
db.word_stats.dropIndex("myIndex")
db.word_stats.getIndexes()
[     {      "v" : 1,
                 "key" : {"_id" : 1},
                 "ns" : "words.word_stats",
                 "name" : "_id_" },
       {        "v" : 1,
                 "key" : {"word" : 1},
                 "unique" : true,
                 "ns" : "words.word_stats",
                 "name" : "word_1" } ]