Hitung kueri, diindeks atau lainnya, lambat karena fakta bahwa MongoDB masih harus melakukan perjalanan b-tree penuh untuk menemukan jumlah dokumen yang sesuai yang sesuai dengan kriteria Anda. Alasannya adalah karena struktur b-tree MongoDB tidak "dihitung" artinya setiap node tidak menyimpan informasi tentang jumlah elemen dalam node/subtree.
Masalah ini dilaporkan di sini https://jira.mongodb.org/browse/SERVER-1752 dan saat ini tidak ada solusi untuk meningkatkan kinerja selain secara manual mempertahankan penghitung untuk koleksi tersebut yang jelas memiliki beberapa kelemahan.
Perhatikan juga bahwa versi db.col.count() (jadi tidak ada kriteria) dapat mengambil jalan pintas yang besar dan tidak benar-benar melakukan kueri karena itu kecepatannya. Yang mengatakan itu tidak selalu melaporkan nilai yang sama dengan kueri hitungan yang seharusnya mengembalikan semua elemen (misalnya tidak akan berada di lingkungan yang di-sharded dengan throughput tulis yang tinggi misalnya). Untuk diperdebatkan apakah itu bug atau tidak. Saya rasa begitu.
Perhatikan bahwa dalam 2.3+ pengoptimalan signifikan diperkenalkan yang seharusnya (dan memang) meningkatkan kinerja penghitungan pada bidang yang diindeks. Lihat :https://jira.mongodb.org/browse/SERVER-7745