根据MongooseJS
和MongoDB
/Node.js
的mongoose documentation:
当应用程序启动时,Mongoose会自动为模式中定义的每个索引调用
ensureIndex
.虽然对于开发来说很好,但建议在生产中禁用此行为,因为创建索引可能会对性能产生重大影响.通过将模式的autoIndex
选项设置为false来禁用该行为.
这似乎指示在部署之前从mongoose中删除自动索引,以优化mongoose,而不是在应用程序启动时指示Mongogo 翻阅所有索引,这似乎是有道理的.
在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,如果单个应用程序是集合的唯一读写器,那么可能不需要ensureIndex
,因为每次发生DB写操作时,它都会继续索引?
Edit:作为补充,MongoDB为how个索引提供了良好的documentation个,但不应该执行why或when个显式索引指令.在我看来,编写器应用程序应该在具有现有索引的集合上自动更新索引,而ensureIndex
实际上更像是一次性的事情(在应用新索引时完成),在这种情况下,Mongoose的autoIndex
应该在正常服务器重启时不起作用.