Podobnie jak w MongoDB 2.6, nie otrzymasz w pełni pokrytego zapytania podzielonego na fragmenty, ponieważ istnieje dodatkowe zapytanie, aby sprawdzić, czy dany fragment jest właścicielem tego dokumentu (patrz SERVER-5022 w narzędziu do śledzenia problemów MongoDB).
mongos
router filtruje dokumenty, które znajdują się na shard, ale nie powinny tam znajdować się, zgodnie z metadanymi klastra podzielonego na fragmenty.
Dokumenty mogą istnieć w więcej niż jednym fragmencie, jeśli:
-
Istnieje migracja fragmentów w toku:dokumenty są kopiowane z fragmentu dawcy do fragmentu docelowego i nie są usuwane z fragmentu dawcy, dopóki migracja porcji nie zostanie pomyślnie zakończona.
-
Dokumenty zostały „osierocone” we fragmencie w wyniku nieudanej migracji lub niepełnego czyszczenia. Istnieje
cleanupOrphaned
polecenie administratora w MongoDB 2.6, które można uruchomić na shardedmongod
aby usunąć osierocone dokumenty.
To ograniczenie dotyczące zapytań jest opisane w Limitach:Objęte zapytania w klastrach podzielonych na fragmenty sekcji dokumentacji MongoDB, ale powinno być również wyróżnione w samouczku na temat Tworzenie objętych zapytań . Podniosłem DOCS-3820 aby uczynić to bardziej oczywistym.