Mongoid提供了一些rake任务,其中一个为数据库中的所有集合创建索引:
rake db:create_indexes
但如果我错了,请纠正我,是不是创建了与实际索引所有项目不同的索引?我怎样才能重新索引我的文档?如果我在Rails中为新集合添加索引但数据库中已有10,000个项目,那么这是必要的。
答案 0 :(得分:4)
我认为您必须手动删除旧索引并创建模型中指定的新索引。
Model.remove_indexes
Model.create_indexes
答案 1 :(得分:0)
Mongoid db:create_indexes只调用Mongodb上的ensure_index
。
在Mongodb上确保新索引时,它将创建索引并重新索引集合上现有的文档。你必须对此感到满意,因为Mongodb将锁定数据库,直到索引完全正常运行。 如果你有10k物品,它应该只锁定几分钟,也许更少。但如果你超过百万个文档,那么你必须以其他方式去做。