Alterações de compatibilidade no MongoDB 8.0
Nesta página
Comportamento da query
Queries para nulo não correspondem a campos indefinidos
A partir do MongoDB 8.0, as comparações com null
em expressões de correspondência de igualdade não correspondem aos valores undefined
.
Por exemplo, considere estes documentos e consulte:
// people collection [ { _id: 1, name: null }, { _id: 2, name: undefined }, { _id: 3, name: [ "Gabriel", undefined ], { _id: 4, names: [ "Alice", "Charu" ] } ]
db.people.find( { name: null } )
Antes do MongoDB 8.0, a query anterior corresponderia a documentos onde:
O campo
name
énull
(_id: 1
)O campo
name
éundefined
ou contém um elemento de arrayundefined
(_id: 2
e_id: 3
)O campo
name
não existe (_id: 4
)
A partir do MongoDB 8.0, a query anterior não corresponde a documentos em que o campo name
seja undefined
ou contenha undefined
elementos de array. A query corresponde apenas a documentos onde:
O campo
name
énull
ou contém um elemento de arraynull
(_id: 1
)O campo
name
não existe (_id: 4
)
Essa mudança de comportamento da query também afeta as operações:
Para saber como reescrever suas queries ou migrar seus dados para levar em conta essa mudança de comportamento, consulte Migrar Dados e Queries Indefinidos.
Itens obsoletos
Obsoleto(a) | Descrição |
---|---|
LDAP | A partir do MongoDB 8.0, A autenticação e autorização LDAP estão obsoletas. O LDAP está disponível e continuará a operar sem alterações durante a vida útil do MongoDB 8. O LDAP será removido em uma futura versão principal. Para obter mais detalhes, consulte Descontinuação do LDAP. As informações de migração do LDAP estarão disponíveis no futuro. |
leituras distribuídas | A partir do MongoDB 8.0, as leituras distribuídas estão obsoletas. As queries que especificam a read preference |
Filtros de índice | Descontinuado na versão 8.0. A partir do MongoDB 8.0, use configurações de query em vez de adicionar filtros de índice. Os filtros de índice estão obsoletos a partir do MongoDB 8.0. As configurações de query têm mais funcionalidades do que os filtros de índice. Além disso, os filtros de índice não são persistentes e você não pode criar facilmente filtros de índice para todos os nós de cluster. Para adicionar configurações de query e explorar exemplos, consulte |
Funções JavaScript do lado do servidor | A partir do MongoDB 8.0, as funções JavaScript do lado do servidor ( |
tcmallocAggressiveMemoryDecommit | MongoDB 8.0 descontinua o parâmetro tcmallocAggressiveMemoryDecommit . |
enableFinerGrainedCatalogCacheRefresh | MongoDB 8.0 descontinua o parâmetro enableFinerGrainedCatalogCacheRefresh . |
timeField na chave de shard para a coleção de séries temporais | A partir do MongoDB 8.0, o uso de |
cleanupOrphaned | MongoDB 8.0 descontinua o comando cleanupOrphaned . Para confirmar que nenhum documento órfão permanece, use $shardedDataDistribution em vez disso. |
rangePreview | A partir do MongoDB 8.0, o algoritmo Se sua Queryable Encryption usar |
Funcionalidades incompatíveis com versões anteriores
Não é possível se conectar diretamente ao shard e executar comandos
A partir do MongoDB 8.0, você só pode executar determinados comandos em shards. Se você tentar se conectar diretamente a um fragmento e executar um comando não suportado, o MongoDB retornará um erro:
"You are connecting to a sharded cluster improperly by connecting directly to a shard. Please connect to the cluster via a router (mongos)."
Para executar um comando de banco de dados de dados não suportado diretamente em um shard, você deve se conectar a mongos
ou ter a função directShardOperations
somente de manutenção.
O MongoDB oferece suporte à transição online de um conjunto de réplicas para um cluster 1-shard, permitindo que os comandos sejam executados diretamente em um shard. No entanto, quando o cluster tiver mais de um shard, somente os comandos listados poderão ser executados diretamente no shard sem a função directShardOperations
somente de manutenção.
Maioria das preocupações com gravação
A partir do MongoDB 8.0, as operações de gravação que usam a preocupação de gravação "majority"
retornam uma confirmação quando a maioria dos membros do conjunto de réplicas tiver escrito a entrada de oplog para a alteração. Isso melhora o desempenho de "majority"
gravações. Em versões anteriores, essas operações aguardavam e retornavam uma confirmação após a maioria dos membros do conjunto de réplicas aplicar a alteração.
Buffers de oplog
A partir do MongoDB 8.0, os secundários gravam e aplicam entradas de oplog para cada lote em paralelo. Isso introduz uma alteração interruptiva para a métrica de status do metrics.repl.buffer
, pois agora fornece informações em dois buffers em vez de um.
O MongoDB 8.0 descontinua as seguintes métricas de status do servidor :
Ele os substitui por estas métricas:
Alterações gerais
Desempenho do desligamento
A partir do MongoDB 8.0, Bulk.insert()
e cargas de trabalho de ingestão de dados podem ter um desempenho melhor. No entanto, desligar o MongoDB imediatamente após a execução dessas cargas de trabalho pode levar mais tempo devido aos dados extras que estão sendo liberados para o disco.
Comandos compactos simultâneos não permitidos
A partir do MongoDB 8.0, se você tentar executar vários comandos compact
simultâneos na mesma coleção, o MongoDB retornará um erro.
Validação de entrada geoespacial
A partir do MongoDB 8.0, você não pode usar queries geoespaciais com entrada malformada. Em versões anteriores, determinadas queries geoespaciais aceitam entrada malformada sem erro.
Os provedores de identidade da OIDC podem compartilhar um emissor
A partir do MongoDB 8.0, quando vários fornecedores de identidade (IDP) são definidos, o parâmetro oidcIdentityProviders
aceita valores issuer
duplicados, desde que o valor audience
seja exclusivo para cada emissor. Isso também está disponível nas versões 7.3 e 7.0.
Alteração de saída doserverStatus
A partir do MongoDB 8.0, wiredTiger.concurrentTransactions
foi renomeado para queues.execution
.
Agregação
$rank
e $denseRank
comportamento
A partir do MongoDB 8.0, null
e valores de campo ausentes nas operações $denseRank
e $rank
sortBy são tratados da mesma forma ao calcular classificações. Essa alteração torna o comportamento de denseRank
e rank
consistente com $sort
.
Saída $shardedDataDistribution
A partir do MongoDB 8.0, $shardedDataDistribution
só retorna a saída para o primary shard de uma collection se o primary shard tiver chunks ou documentos órfãos.
Para detalhes, consulte $shardedDataDistribution
.
TCMalloc atualizado
A partir do MongoDB 8.0, O MongoDB usa uma versão atualizada do TCMalloc que usa caches por CPU, em vez de caches por thread, para reduzir a fragmentação da memória e tornar seu banco de dados de dados mais resiliente a cargas de trabalho de alto estresse.
Para usar o novo TCMalloc com melhor desempenho, consulte Otimização de desempenho do TCMalloc para uma implantação autogerenciada.