最佳答案
按照猫鼬 文件的 MongooseJS
和 MongoDB
/Node.js
:
当应用程序启动时,Mongoose 会自动为模式中的每个已定义索引调用
ensureIndex
。虽然对于开发来说很不错,但建议在生产环境中禁用此行为,因为创建索引可能会对性能产生重大影响。通过将架构的autoIndex
选项设置为 false 来禁用该行为。
这似乎指示在部署之前删除来自猫鼬的自动索引,从而优化猫鼬,而不是指示 Mongo 在应用程序启动时遍历所有索引,这似乎是有意义的。
在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,如果一个应用程序是集合的唯一读/写程序,那么 ensureIndex
也许是不必要的,因为它将在每次 DB 写操作发生时继续索引?
编辑: 作为补充,MongoDB 为 怎么做提供了很好的 文件来进行索引,但是不能进行 为什么或 什么时候的显式索引指令。在我看来,索引应该由编写器应用程序自动更新已有索引的集合,而且 ensureIndex
实际上更像是一次性事件(在应用新索引时完成) ,在这种情况下,Mongoose 的 autoIndex
在正常的服务器重启下应该是不可操作的。