Det ser ud til, at min kommentar er blevet lidt misforstået, så jeg vil præcisere. Det er lige meget, hvornår du kalder det så længe det kaldes på et tidspunkt, før du kalder find() for første gang. Det betyder med andre ord ikke rigtig noget, hvornår du opretter indekset, så længe det er der, før du forventer at bruge det.
Et almindeligt mønster, som jeg har set meget, er kodning af ensureIndex
på samme tid (og på samme sted) som find()
opkald. ensureIndex
vil kontrollere, om indekset eksisterer, og oprette det, hvis det ikke gør det. Der er utvivlsomt nogle overhead (omend meget små) ved at kalde sureindex før nogensinde call to find(), så det er at foretrække ikke at gøre dette.
Jeg kalder ensureIndex
i kode for at forenkle implementeringer og for at undgå at skulle administrere db og kodebase separat. Afvejningen af nem implementering udligner redundansen af efterfølgende opkald for at sikreIndex (for mig.)