raf*_*ian 29 indexing collections document mongodb
如果我在Mongo中创建一个集合,并且在将文档添加到此集合之后,我使用ensureIndex()在该集合中的文档上创建一个索引,例如,如果我删除该集合,是否必须重新创建索引?
lig*_*lig 41
简短回答:是的.
收集下降时索引正在下降.您需要重新创建索引.
您可能希望不删除集合,但删除其中的所有项目db.collection_name.remove({}).这将需要更多的资源,但留下您的索引.实际上它需要删除所有索引数据.这就是为什么更倾向于删除整个集合并在此之后重新创建索引.
sha*_*dfc 13
我只是在一个包含10个索引的集合上执行此操作,并且不想手动重新创建它们.您可以使用mongo shell中的以下三行完成drop并重新创建索引:
var indexes = db.collection.getIndexKeys().splice(1)
db.collection.drop();
indexes.forEach(function(el){ db.collection.ensureIndex(el, {background:true}); })
Run Code Online (Sandbox Code Playgroud)
这不足以处理唯一或稀疏索引,但我认为通过使用getIndexes()的输出来支持相当容易.我不需要那个,所以我没有这样做.
splice(1)只是为了删除_id上的索引,因为它将被自动创建.
| 归档时间: |
|
| 查看次数: |
11383 次 |
| 最近记录: |