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