Parece que se ha malinterpretado un poco mi comentario, así que lo aclararé. Realmente no importa cuándo lo llames siempre que se llame en algún momento antes de llamar a find() por primera vez. En otras palabras, realmente no importa cuándo creas el índice, siempre que esté allí antes de que esperes usarlo.
Un patrón común que he visto mucho es codificar el ensureIndex
al mismo tiempo (y en el mismo lugar) que find()
llamar. ensureIndex
verificará si el índice existe y lo creará si no existe. Sin duda, hay algunos gastos generales (aunque muy pequeños) al llamar a sureindex antes de llamar a find(), por lo que es preferible no hacerlo.
Llamo a ensureIndex
en el código para simplificar las implementaciones y evitar tener que administrar la base de datos y el código base por separado. La compensación de la facilidad de implementación equilibra la redundancia de llamadas posteriores para asegurarIndex (para mí).