2016-07-11 87 views
1

我知道我應該removeAll文件,而不是刪除集合。但爲什麼貓鼬不會在集合被刪除後重新創建索引?貓鼬是不是重新創建索引集合是丟棄

我有一個模式,其中一個字段有unique:true設置。 索引在我啓動服務器時創建。但是,如果我刪除集合,並且有新記錄,則會重新創建集合並插入記錄。但是,唯一字段的索引不會再次創建。

這是爲什麼?我如何要求它重新創建索引?

回答

1

它與獨特無關。如果在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); 
    } 
});