mongoose 拾遺

weixin_33978044發表於2017-08-28

mongoose 文件中提到:

When your application starts up, Mongoose automatically calls ensureIndex for each defined index in your schema. Mongoose will call ensureIndex for each index sequentially, and emit an 'index' event on the model when all the ensureIndex calls succeeded or when there was an error. While nice for development, it is recommended this behavior be disabled in production since index creation can cause a significant performance impact. Disable the behavior by setting the autoIndex option of your schema to false, or globally on the connection by setting the option config.autoIndex to false.

在開發過程中可以使用 ensureIndex,這樣每次改動資料庫結構時,自動生成對應的 Index 。而在生產環境中,因為 ensureIndex 操作會影響效能,所以建議禁止使用。

在沒有理解 MongoDB 的生成 Index 操作前,對上述解釋可能迷惑。因為如果禁止 ensureIndex,那麼所有的 Index 不會生成,也就不會起效。但是注意這句話的前提條件是第一次建立 Collection 時。也就是說如果在建立 Collection 時,沒有禁止 ensureIndex 那麼相應的 Index 就會生成,以後即使禁止了 ensureIndex ,已經生成的 Index 依然有效。

總結: 在開發環境中啟用 ensureIndex ,並且建立 Collection,然後在生產環境中禁止 ensureIndex

相關文章