Det verkar som om min kommentar har blivit lite missförstådd, så jag ska förtydliga. Det spelar egentligen ingen roll när du anropar det så länge det anropas någon gång innan du anropar find() för första gången. Det spelar med andra ord inte så stor roll när du skapar indexet, så länge det finns där innan du förväntar dig att använda det.
Ett vanligt mönster som jag har sett mycket är att koda ensureIndex
samtidigt (och på samma plats) som find()
ringa upp. ensureIndex
kommer att kontrollera om indexet finns och skapa det om det inte gör det. Det finns utan tvekan en del omkostnader (även om det är mycket små) i att anropa sureindex före någonsin call to find() så det är bättre att inte göra detta.
Jag anropar ensureIndex
i kod för att förenkla driftsättningar och för att undvika att behöva hantera db och kodbas separat. Avvägningen mellan enkel implementering balanserar redundansen för efterföljande anrop för att säkerställaIndex (för mig.)