Seperti pada MongoDB 2.6, Anda tidak akan mendapatkan kueri sharded yang sepenuhnya tertutup karena ada kueri tambahan untuk memeriksa apakah shard yang dimaksud memiliki dokumen itu (lihat SERVER-5022 di pelacak masalah MongoDB).
mongos router memfilter dokumen yang ditemukan di shard tetapi seharusnya tidak tinggal di sana menurut metadata kluster sharded.
Dokumen dapat ada di lebih dari satu pecahan jika:
-
Ada migrasi potongan sedang berlangsung:dokumen disalin dari shard donor ke shard tujuan dan tidak dihapus dari shard donor hingga migrasi chunk berhasil diselesaikan.
-
Dokumen telah "tidak ada" di shard sebagai akibat dari migrasi yang gagal atau pembersihan yang tidak lengkap. Ada
cleanupOrphanedperintah admin di MongoDB 2.6 yang dapat dijalankan melawanmongodyang di-sharded untuk menghapus dokumen yatim piatu.
Batasan kueri tercakup ini dicatat dalam Batas:Kueri Tercakup dalam Cluster yang Dibagikan bagian dari dokumentasi MongoDB tetapi juga harus disorot dalam tutorial di Membuat Kueri Tercakup . Saya telah mengangkat DOCS-3820 untuk membuatnya lebih jelas.