mongoose 拾遗

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

你可能感兴趣的:(mongoose 拾遗)