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" } ]