mongoDBでは、シャーディングされたコレクションのcountが正しい値を返さないことがあります。これには2つの原因があります。 チャンク移動中である 孤児ドキュメントが存在する 1は、チャンク移動中は正しい値が帰らないということです。シャード間でデータが移動している最中なので正しい値が取れないのは直感的に理解できると思います。 2は、孤児ドキュメント(Orphaned Documents)がカウントされてしまう問題です。孤児ドキュメントとはチャンク移動したドキュメントが元のシャードから削除されず残ってしまったものです。シャードキーの範囲外なのでmongosからは到達不能になっていますが、countには計上されてしまいます。 孤児ドキュメントを解消するには、以下のコマンドを各シャードのreplica set primaryのmongod(mongosではありません)で実行します。これは重