Gemäß der Mongoose- Dokumentation für MongooseJS
und MongoDB
/ Node.js
:
Beim Start Ihrer Anwendung ruft Mongoose automatisch
ensureIndex
jeden definierten Index in Ihrem Schema auf. Obwohl dies für die Entwicklung hilfreich ist, wird empfohlen, dieses Verhalten in der Produktion zu deaktivieren, da die Indexerstellung erhebliche Auswirkungen auf die Leistung haben kann. Deaktivieren Sie das Verhalten, indem Sie dieautoIndex
Option Ihres Schemas auf false setzen.
Dies scheint die Entfernung der automatischen Indizierung von Mungo vor der Bereitstellung anzuweisen, um Mongoose davon abzuhalten, Mongo anzuweisen, beim Start der Anwendung alle Indizes zu durchsuchen, was sinnvoll erscheint.
Was ist der richtige Weg, um die Indizierung im Produktionscode zu handhaben? Vielleicht sollte ein externes Skript Indizes generieren? Oder ist es möglicherweise ensureIndex
unnötig, wenn eine einzelne Anwendung der einzige Leser / Schreiber einer Sammlung ist, weil sie bei jedem DB-Schreibvorgang einen Index fortsetzt?
Edit: Um zu ergänzen, bietet MongoDB gute Dokumentation für die , wie die Indizierung zu tun, aber nicht , warum oder wenn explizite Indexierung Richtlinien durchgeführt werden sollten. Es scheint mir, dass Indizes von Writer-Anwendungen für Sammlungen mit vorhandenen Indizes automatisch auf dem neuesten Stand gehalten werden sollten, und das ensureIndex
ist eher eine einmalige Sache (erfolgt, wenn ein neuer Index angewendet wird). In diesem Fall sollte Mongoose autoIndex
eine sein no-op bei einem normalen Serverneustart.