Както при MongoDB 2.6, няма да получите напълно покрита шард заявка, защото има допълнителна заявка, за да проверите дали въпросният шард притежава този документ (вижте SERVER-5022 в програмата за проследяване на проблеми MongoDB).
mongos
рутерът филтрира документи, които се намират на шард, но които не трябва да живеят там според метаданните на шардирания клъстер.
Документите могат да съществуват в повече от един шард, ако:
-
Има миграция на парче в процес на изпълнение:документите се копират от донорен сегмент в целеви сегмент и не се премахват от донорния сегмент, докато миграцията на част не завърши успешно.
-
Документите са „осиротели“ на фрагмент в резултат на неуспешна миграция или непълно почистване. Има
cleanupOrphaned
администраторска команда в MongoDB 2.6, който може да се изпълнява срещу разделенmongod
за изтриване на осиротели документи.
Това покрито ограничение на заявката е отбелязано в Ограничения:Покрити заявки в разделени клъстери раздел на документацията на MongoDB, но също така трябва да се подчертае в урока за Създаване на обхванати заявки . Повдигнах DOCS-3820 за да стане това по-очевидно.