根据和/的Mongoose文档:MongooseJS
MongoDB
Node.js
当您的应用程序启动时,Mongoose 会自动调用
ensureIndex
您架构中定义的每个索引。虽然很适合开发,但建议在生产中禁用此行为,因为创建索引会导致显着的性能影响。autoIndex
通过将架构的选项设置为 false 来禁用该行为。
这似乎指示在部署之前从 mongoose 中删除自动索引,以优化 Mongoose 从指示 Mongo 在应用程序启动时遍历所有索引,这似乎是有道理的。
在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,ensureIndex
如果单个应用程序是集合的唯一读取器/写入器,则可能是不必要的,因为每次发生数据库写入时它都会继续索引?
编辑:作为补充,MongoDB 为如何进行索引提供了很好的文档,但没有提供明确索引指令的原因或时间。在我看来,索引应该由编写器应用程序自动在具有现有索引的集合上保持最新,这实际上更像是一次性的事情(在应用新索引时完成),在这种情况下,猫鼬应该是no-op 下服务器正常重启。ensureIndex
autoIndex