Stejně jako v MongoDB 2.6 nezískáte plně pokrytý fragmentovaný dotaz, protože existuje další dotaz, který kontroluje, zda dotyčný fragment vlastní daný dokument (viz SERVER-5022 v nástroji pro sledování problémů MongoDB).
mongos
router filtruje dokumenty, které se nacházejí na datovém fragmentu, ale které by tam podle metadat sdíleného clusteru neměly žít.
Dokumenty mohou existovat na více než jednom fragmentu, pokud:
-
Dochází k migraci bloků probíhá:dokumenty jsou zkopírovány z datového fragmentu dárce do cílového datového fragmentu a nejsou z datového fragmentu dárce odstraněny, dokud není migrace bloku úspěšně dokončena.
-
Dokumenty „osiřely“ na fragmentu v důsledku neúspěšné migrace nebo neúplného vyčištění. Existuje
cleanupOrphaned
příkaz admin v MongoDB 2.6, který lze spustit proti rozštěpenémumongod
k odstranění osiřelých dokumentů.
Toto omezení pokrytých dotazů je uvedeno v Limitech:Pokryté dotazy ve sdílených klastrech sekce dokumentace MongoDB, ale měla by být také zvýrazněna v tutoriálu na Vytváření pokrytých dotazů . Zvedl jsem DOCS-3820 aby to bylo jasnější.