それぞれのフィールドが設定されている場合、オブジェクトはスパースインデックスに含まれますnull。したがって、を使用$existsして、値が設定されている要素の数を取得できます。
> db.Foo.count();
185
> db.Foo.find({"SparseField" : {$exists : true} }).count();
174
したがって、11個のドキュメントのみがスパースインデックスに含まれていません。または、を使用hintして、スパースインデックスを使用するクエリを強制し、を使用explainしていくつかの統計を取得することもできます。
> db.Foo.find().hint("sparse_index_name").explain();
{
"cursor" : "BtreeCursor sparse_index_name",
"n" : 174,
}
を使用したCAVEATクエリexplain()は、explainを使用しないクエリとは異なる動作をします。具体的にdb.Foo.find().hint("sparse_index_name").count()は、174ではなく185を返します。
スパースインデックスが正しく使用されているかどうかを時々チェックすることは理にかなっています。
> db.Foo.find({"SparseField" : null }).count();
38
おっと。これらの38のドキュメントは、おそらく意図的にではなく、インデックスが付けられています。