Wie bei MongoDB 2.6 erhalten Sie keine vollständig abgedeckte Shard-Abfrage, da es eine zusätzliche Abfrage gibt, um zu überprüfen, ob das betreffende Shard dieses Dokument besitzt (siehe SERVER-5022 im MongoDB Issue Tracker).
Die mongos
Router filtert Dokumente, die auf einem Shard gefunden werden, die dort aber gemäß den Sharding-Cluster-Metadaten nicht vorhanden sein sollten.
Dokumente können auf mehr als einem Shard vorhanden sein, wenn:
-
Es gibt eine Chunk-Migration in Bearbeitung:Dokumente werden von einem Donor-Shard auf ein Ziel-Shard kopiert und nicht aus dem Donor-Shard entfernt, bis die Chunk-Migration erfolgreich abgeschlossen ist.
-
Dokumente sind aufgrund einer fehlgeschlagenen Migration oder einer unvollständigen Bereinigung auf einem Shard „verwaist“. Es gibt einen
cleanupOrphaned
Admin-Befehl in MongoDB 2.6, das gegen einen fragmentiertenmongod
ausgeführt werden kann verwaiste Dokumente zu löschen.
Diese Einschränkung für abgedeckte Abfragen ist in den Limits angegeben:Abgedeckte Abfragen in Sharded-Clustern Abschnitt der MongoDB-Dokumentation, sollte aber auch im Tutorial zu Abgedeckte Abfragen erstellen . Ich habe DOCS-3820 ausgelöst um dies deutlicher zu machen.