Ini karena Anda menggunakan indeks sparse untuk bcoded_metadata
. Jika Anda memiliki indeks sparse pada bcoded_metadata, maka indeks tidak akan berisi dokumen yang tidak memiliki bidang bcoded_metadata
. Dokumen tanpa bcoded_metadata
bidang bukan bagian dari kueri asli Anda, dan karenanya "hitungan" akan mengembalikan 0.
Jika Anda hanya menjalankan find:db.ts.find({"bcoded_metadata" : { "$exists" : false } })
maka Anda juga tidak akan mendapatkan hasil apa pun. Anda dapat menggunakan indeks non-jarang, atau melakukan penghitungan penuh dengan db.ts.count();
dan kurangi hasil db.ts.find({"bcoded_metadata" : { "$exists" : true } })
hasil.
Ada tiket JIRA yang menjelaskannya sedikit lebih banyak, dan dapat dilacak jika MongoDB memperoleh pesan kesalahan/peringatan untuk ini:https://jira.mongodb.org/browse/SERVER-3918