1
我知道我應該removeAll
文件,而不是刪除集合。但爲什麼貓鼬不會在集合被刪除後重新創建索引?貓鼬是不是重新創建索引集合是丟棄
我有一個模式,其中一個字段有unique:true
設置。 索引在我啓動服務器時創建。但是,如果我刪除集合,並且有新記錄,則會重新創建集合並插入記錄。但是,唯一字段的索引不會再次創建。
這是爲什麼?我如何要求它重新創建索引?
我知道我應該removeAll
文件,而不是刪除集合。但爲什麼貓鼬不會在集合被刪除後重新創建索引?貓鼬是不是重新創建索引集合是丟棄
我有一個模式,其中一個字段有unique:true
設置。 索引在我啓動服務器時創建。但是,如果我刪除集合,並且有新記錄,則會重新創建集合並插入記錄。但是,唯一字段的索引不會再次創建。
這是爲什麼?我如何要求它重新創建索引?
它與獨特無關。如果在mongodb中刪除索引,則必須重新啓動節點。
當您的應用程序啓動時,Mongoose將自動爲您架構中定義的每個索引調用 ensureIndex。 Mongoose將依次爲每個索引調用 ensureIndex,並在 模型上發出'index'事件,當所有ensureIndex調用成功時或出現 錯誤時。儘管開發很好,但建議在生產中禁用此行爲 ,因爲索引創建可能會對性能造成顯着影響。
然而,在開發模式下,你可以重新在法索引(綁路由或事件的實例方法):
(Mongodb > 3.0) db.collection.createIndex({})
(Mongodb < 3.0) db.collection.ensureIndex({})
隨着貓鼬它看起來像這樣:
Model.ensureIndexes(function (err) {
if (err) {
return res.end(err);
}
});