Todos os produtos
Search
Central de documentação

ApsaraDB for MongoDB:Recursos do MongoDB 8.3

Última atualização: Sep 10, 2026

O ApsaraDB for MongoDB 8.3 introduz comandos granulares para remoção de shard, registro de consultas lentas em andamento, rastreamento de memória por operação e novas expressões de agregação.

Para consultar o changelog da comunidade, veja MongoDB 8.3 release notes.

Visão geral

O ApsaraDB for MongoDB 8.3 inclui as seguintes alterações:

Para acessar o changelog completo da comunidade, consulte MongoDB 8.3 release notes.

Melhorias na agregação

Acesso ao índice de array

As operações $map, $filter e $reduce agora expõem o índice do elemento atual. Vincule-o a uma variável com arrayIndexAs ou use a variável integrada $$IDX.

// Add a 1-based "rank" field to each element
db.scores.aggregate([
  { $project: {
      ranked: { $map: {
        input: "$items",
        as: "item",
        arrayIndexAs: "i",
        in: { value: "$$item", rank: { $add: ["$$i", 1] } }
      }}
  }}
])

Novas expressões

Expressão

Finalidade

Exemplo de uso

$subtype

Retorna o subtipo BinData

Diferenciar UUID de campos binários genéricos

$createObjectId

Gera um ObjectId aleatório no pipeline

Atribuir IDs durante $merge ou $out sem ida e volta ao cliente

$hash / $hexHash

Produz hashes MD5, SHA-256 ou XXH64

Calcular fingerprints de conteúdo ou chaves de partição no servidor

$serializeEJSON / $deserializeEJSON

Converte entre BSON e Extended JSON

Converter strings JSON armazenadas como campos de texto de volta para BSON tipado

Conversões de tipo ampliadas

  • $toString agora processa objetos, arrays, expressões regulares, MaxKey, MinKey e timestamps.

  • $convert adicionou um parâmetro base para conversões de string/número nas bases 2, 8, 10 e 16.

  • Novas conversões $toArray (string para array, binData para array numérico) e $toObject (string para objeto). Consulte Convert binData to Array.

Revisão do gerenciamento de shard

Remoção granular de shard

removeShard foi descontinuado. Quatro novos comandos dividem a remoção de shard em etapas discretas e reversíveis:

Etapa

Comando

Descrição

Iniciar

startShardDraining

Inicia a migração de chunks para fora do shard alvo

Pausar

stopShardDraining

Interrompe a migração; o shard permanece no cluster

Monitorar

shardDrainingStatus

Retorna o progresso da migração e a contagem de chunks restantes

Confirmar

commitShardRemoval

Finaliza a remoção após a conclusão da drenagem

Pause e retome a drenagem a qualquer momento. Esse recurso é útil durante janelas de manutenção ou picos de carga inesperados.

Requisito de roteamento de DDL

Operações DDL e applyOps devem passar pelo mongos. A execução direta em um nó de shard não é mais permitida. Essa mudança evita inconsistências de metadados em clusters com sharding.

Melhorias em monitoramento e diagnóstico

Registro de consultas lentas em andamento

Consultas lentas agora são registradas durante a execução, não apenas após a conclusão. Cada consulta é registrada uma vez ao ultrapassar o limiar definido.

Defina o limiar com --defaultSlowInProgMS na inicialização ou em tempo de execução:

db.setProfilingLevel(1, { slowms: 100, slowinprogms: 3000 })

Cada entrada de log inclui um originalQueryShapeHash que vincula o log no nível do shard à solicitação original no mongos.

Rastreamento de memória por operação

Dois novos campos aparecem em $currentOp, db.currentOp(), profiler, logs de consultas lentas, saída do explain e PlanCache.list():

Campo

Descrição

inUseTrackedMemBytes

Memória atual consumida pela operação

peakTrackedMemBytes

Pico de memória consumido pela operação

Use esses campos para identificar consultas que consomem muita memória e definir limites adequados.

queryStats em servidores de shard

Quando queryStats está ativado, os servidores de shard incluem consultas encaminhadas pelo mongos. Em versões anteriores, essas consultas eram invisíveis no nível do shard.

Saída seletiva do serverStatus

Novas métricas abrangem extensões de agregação, seções críticas de shard, operações TTL, busca vetorial, latência do fetcher de oplog de replicação e admissão na fila de execução.

Use a nova flag none: 1 para suprimir todas as seções opcionais e ativar apenas as desejadas:

db.runCommand({ serverStatus: 1, none: 1, locks: 1 })

Use lockContentionMetrics: 1 para incluir dados de contenção de bloqueio sob demanda.

Nota

O campo service foi removido da saída do serverStatus.

Aumento de retenção do FTDC

O limite padrão do diretório de diagnóstico FTDC aumentou de 200 MB para 500 MB. O connPoolStats agora é coletado para o mongod.

Desempenho e parâmetros do sistema

Limites de recursos pré-autenticação

Três novos parâmetros limitam os recursos consumidos por conexões não autenticadas:

Parâmetro

Finalidade

capMemoryConsumptionForPreAuthBuffers

Limita a memória total para buffers de pré-autenticação

messageSizeErrorRateSec

Limita a taxa de respostas de erro de tamanho de mensagem

preAuthMaximumMessageSizeBytes

Defina o tamanho máximo do corpo da mensagem antes da autenticação

Essas configurações protegem as instâncias contra exaustão de recursos causada por ataques de inundação de conexões.

Recuperação automática de pressão de cache

cachePressureQueryPeriodMilliseconds controla a frequência com que o mecanismo de armazenamento verifica a pressão do cache. Ao detectar pressão, o sistema aborta automaticamente as transações mais antigas para liberar espaço no cache.

Seleção de servidor consciente de sobrecarga

Quando overloadAwareServerSelectionEnabled está ativado, um cliente que recebe SystemOverloadedError tenta novamente automaticamente em um nó diferente.

Cinco parâmetros ajustam o backoff de nova tentativa para conexões internas de mongos para mongod:

Parâmetro

Controle

defaultClientBaseBackoffMillis

Atraso inicial de nova tentativa

defaultClientMaxBackoffMillis

Atraso máximo de nova tentativa

defaultClientRetryAttempts

Contagem máxima de novas tentativas

shardRetryTokenBucketCapacity

Tamanho do pool de tokens de nova tentativa por sobrecarga por shard

shardRetryTokenReturnRate

Taxa de retorno de tokens em solicitações bem-sucedidas

Isenções de limite de taxa de entrada

ingressRequestRateLimiterApplicationExemptions isenta aplicações específicas (por appName) dos limites de taxa de entrada. Defina o nome da aplicação na string de conexão:

mongodb://server:27017/db?appname=mongodump

Controle de impacto do profiler

Dois parâmetros impedem que o profiler degrade o desempenho em produção:

Parâmetro

Finalidade

internalQueryGlobalProfilingLockDeadlineMs

Timeout global para o bloqueio de profiling

internalProfilingMaxAbandonedWritesPerSecondPerDb

Limite de gravações abandonadas do profiler por banco de dados por segundo

Monitore a sobrecarga do profiler com profiler.totalAbandonedWrites e profiler.dbsPastThreshold no serverStatus.

Alterações em índices

Atualização da versão padrão do 2dsphere

A 2dsphereVersion padrão passou de 3 para 4.

Importante

Antes de fazer downgrade do FCV para uma versão inferior a 8.3, remova todos os índices 2dsphere versão 4.

Prioridade do GeoJSON na geração de índices

Quando um documento contém tanto GeoJSON quanto coordenadas numéricas legadas, a geração de índices prioriza o GeoJSON. Se você depende de coordenadas legadas em índices existentes, reconstrua esses índices após a atualização.

Alterações em séries temporais

Alteração

Detalhe

Restrição de chave de shard

refineCollectionShardKey em coleções de séries temporais agora exige que a chave de shard referencie campos lógicos de metadados e de tempo. Chaves no formato de bucket não são mais aceitas.

Nomenclatura de índices

Índices de séries temporais não podem mais ser nomeados como _id_, e _id_ não pode ser usado como hint.

Nomenclatura de timeField

Um nome de timeField não pode mais começar com $.

Alterações de comportamento

Área

Alteração

Comportamento anterior

Códigos de erro de upsert

Upserts que geram objetos BSON > 16 MB retornam o código de erro 10334 (BSONObjectTooLarge)

Retornava 17419 ou 17420

validate

validate verifica documentos que excedem 16 MB. validate(full=true) não ativa mais checkBSONConformance automaticamente.

Sem verificação de 16 MB; validação completa ativava conformidade BSON

Aritmética de datas

$dateAdd / $dateSubtract com unidades diferentes de milissegundos e datas pré-epoch podem retornar resultados um segundo mais lentos

Mais rápido, porém menos preciso

Parsing de float

Agora é possível analisar toda a faixa de floats de precisão dupla (incluindo subnormais como 7,08263e-317)

Subnormais rejeitados

Limite de caracteres de $trim

O argumento chars de $trim, $ltrim e $rtrim tem limite de 4.096 caracteres

Sem limite

$mergeObjects

Agora pode ser usado dentro de $setWindowFields

Não suportado

Memória TextOr

O estágio TextOr (pontuação $text) tem limite de 100 MB; faz spill para disco quando allowDiskUse é true

Sem limite

explain em banco inexistente

explain() em um banco de dados inexistente em um cluster com sharding não cria mais o banco implicitamente

Banco criado implicitamente

config.csrs.indexes

A coleção de sistema config.csrs.indexes foi removida

Presente

findShardsOnConfigTimeoutMS

Novo parâmetro que limita o tempo de consulta em config.shards

Sem timeout