Dzieje się tak, ponieważ używasz rzadkiego indeksu dla bcoded_metadata . Jeśli masz rzadki indeks na bcoded_metadata, indeks nie będzie zawierał dokumentów, które nie mają pola bcoded_metadata . Dokumenty bez bcoded_metadata pole nie jest częścią oryginalnego zapytania, dlatego "count" zwróci 0.
Jeśli uruchomisz tylko wyszukiwanie:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) wtedy też nie uzyskasz żadnych wyników. Możesz użyć nierozrzedzonego indeksu lub wykonać pełne zliczenie za pomocą db.ts.count(); i odejmij wynik db.ts.find({"bcoded_metadata" : { "$exists" : true } }) wynik.
Istnieje bilet JIRA, który wyjaśnia nieco więcej i można go śledzić w przypadku, gdy MongoDB otrzyma komunikat o błędzie/ostrzeżeniu:https://jira.mongodb.org/browse/SERVER-3918