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