Sepertinya komentar saya sedikit disalahpahami, jadi saya akan mengklarifikasi. Tidak masalah ketika Anda memanggilnya asalkan dipanggil di beberapa titik sebelum Anda memanggil find() untuk pertama kalinya. Dengan kata lain, tidak masalah ketika Anda membuat indeks, selama indeks itu ada sebelum Anda berharap untuk menggunakannya.
Pola umum yang sering saya lihat adalah mengkodekan ensureIndex
pada saat yang sama (dan di tempat yang sama) sebagai find()
panggilan. ensureIndex
akan memeriksa apakah indeks ada dan membuatnya jika tidak. Tidak diragukan lagi ada beberapa overhead (walaupun sangat kecil) dalam memanggil sureindex sebelum memanggil find() jadi lebih baik untuk tidak melakukan ini.
Saya memanggil ensureIndex
dalam kode untuk menyederhanakan penerapan dan untuk menghindari keharusan mengelola db dan basis kode secara terpisah. Pengorbanan kemudahan penerapan menyeimbangkan redundansi panggilan berikutnya untuk memastikanIndex (untuk saya.)