MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Não é possível obter uma consulta coberta para coleção fragmentada no MongoDB


Como no MongoDB 2.6, você não receberá uma consulta fragmentada totalmente coberta porque há uma consulta extra para verificar se o fragmento em questão possui esse documento (consulte SERVER-5022 no rastreador de problemas do MongoDB).

Os mongos roteador filtra documentos encontrados em um estilhaço, mas que não devem residir lá de acordo com os metadados do cluster fragmentado.

Os documentos podem existir em mais de um estilhaço se:

  • Há uma migração de partes em andamento:os documentos são copiados de um fragmento doador para um fragmento de destino e não são removidos do fragmento doador até que a migração do fragmento seja concluída com êxito.

  • Os documentos ficaram "órfãos" em um estilhaço como resultado de uma migração com falha ou limpeza incompleta. Existe um cleanupOrphaned comando de administrador no MongoDB 2.6 que pode ser executado em um mongod fragmentado para excluir documentos órfãos.

Essa limitação de consulta coberta é observada nos Limites:Consultas cobertas em clusters fragmentados seção da documentação do MongoDB, mas também deve ser destacado no tutorial em Como criar consultas cobertas . Criei DOCS-3820 para tornar isso mais óbvio.