Net als bij MongoDB 2.6 krijgt u geen volledig gedekte shard-query omdat er een extra query is om te controleren of de shard in kwestie eigenaar is van dat document (zie SERVER-5022 in de MongoDB issue tracker).
De mongos
router filtert documenten die op een shard worden gevonden, maar die daar niet zouden moeten leven volgens de metadata van het shard-cluster.
Documenten kunnen op meer dan één shard voorkomen als:
-
Er is een chunkmigratie in uitvoering:documenten worden gekopieerd van een donor-shard naar een doel-shard en worden niet verwijderd uit de donor-shard totdat de chunk-migratie met succes is voltooid.
-
Documenten zijn "verweesd" op een shard als gevolg van een mislukte migratie of onvolledige opschoning. Er is een
cleanupOrphaned
admin commando in MongoDB 2.6 die kan worden uitgevoerd tegen een shardedmongod
om verweesde documenten te verwijderen.
Deze gedekte querybeperking wordt vermeld in de Limits:Overdekte zoekopdrachten in Sharded Clusters sectie van de MongoDB-documentatie, maar moet ook worden gemarkeerd in de tutorial op Overdekte zoekopdrachten maken . Ik heb DOCS-3820 aangemaakt om dit duidelijker te maken.