每猫鼬documentation为MongooseJS
和MongoDB
/Node.js
:猫鼬索引在生产代码
当你的应用程序启动后,猫鼬自动模式中的每个定义的索引调用
ensureIndex
。尽管开发很好,但建议在生产中禁用此行为,因为索引创建可能会对性能产生重大影响。将架构的autoIndex
选项设置为false来禁用此行为。
这似乎是指示在部署之前从猫鼬中删除自动索引以优化Mongoose,从而指示Mongo在应用程序启动时通过所有索引进行转移和转移,这似乎是有意义的。
在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,如果单个应用程序是集合的唯一读取器/写入器,那么可能不需要ensureIndex
,因为每次发生数据库写入时它都会继续索引?
编辑:为补充,MongoDB中提供了良好的documentation为如何做索引,但不为什么或当明确索引指令应该做的。在我看来,索引应该由编写器应用程序自动保持在具有现有索引的集合上,并且ensureIndex
实际上更多的是一次性的事情(当新索引被应用时完成),在这种情况下,Mongoose的autoIndex
应该在正常的服务器重新启动下无法运行。
无论谁低估了这个问题,请提供一个理由。 – rdrey