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
cleanupOrphaned
perintah admin di MongoDB 2.6 yang dapat dijalankan melawanmongod
yang 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.