NOVIDADES
Nesta página
- Novidades em 5.1.1
- Novidades no 5.1
- Novidades no 5.0
- Novidades no 4.11
- Novidades no 4.10
- Novidades no 4.9
- 4.8: quais as novidades
- Novidades no 4.7.1
- O que há de novo em 4.7
- 4.6: quais as novidades
- Novidades no 4.5.1
- Novidades no 4.5
- O que há de novo em 4.4
- Novidades no 4.3
- 4.2: quais as novidades
- Novidades no 4.1
- 4.0: quais as novidades
Descubra as novidades de cada versão:
Novidades em 5.1.1
O 5.1. O patch do driver 1 inclui as seguintes alterações:
Ao usar o mecanismo de autenticação
MONGODB-OIDC
, você não deve incluir vírgulas no valor da connection stringauthMechanismProperties
. Para saber mais sobre esse comportamento, consulte a seção MONGODB-OIDC do guia Autenticação empresarial.Otimiza a taxa de transferência do GridFS removendo a clonagem de array de bytes redundante. Os tipos
GridFSDownloadStream
eGridFSUploadStream
usam o tipoBsonDocument
em vez deDocument
.
Novidades no 5.1
Aviso
Depreciações nesta versão
Para evitar alterações significativas em futuras versões principais do driver, substitua qualquer código de aplicativo que dependa de elementos de programa obsoletos.
Esta seção inclui as seguintes informações:
Descontinuações no 5.1
Suporte para servidor MongoDB v3.6 está obsoleto e será removido na próxima versão do driver. Para saber como atualizar seu sistema do servidor MongoDB, consulte Notas de versão no manual do servidor MongoDB.
Melhorias na versão 5.1
Testes internos da tecnologia de imagem nativa GraalVM. Esses testes envolvem a criação de aplicativos nativos usando a ferramenta de imagem nativa GraalVM.
Compatibilidade aprimorada para o mecanismo de autenticação MONGODB-OIDC. Para obter mais informações sobre o OIDC, consulte a seção MONGODB-OIDC do guia Enterprise Authentication Mechanisms.
Novos recursos em 5.1
Introduz a opção
serverMonitoringMode
de conexão URI. Para obter mais informações sobre essa opção, consulte o guia Opções de conexão .
Novidades no 5.0
Aviso
Alterações significativas nesta versão
Esta versão do driver apresenta alteração interruptiva. Para obter uma lista dessas alterações, consulte a seção Alterações significativas da versão 5.0 no guia de atualização.
Aviso
Depreciações nesta versão
Para evitar alterações significativas em futuras versões principais do driver, substitua qualquer código de aplicativo que dependa de elementos de programa obsoletos.
Esta seção inclui as seguintes informações:
Depreciações na versão 5.0
O método
org.mongodb.scala.Observable.completeWithUnit()
está obsoleto. Esse método não é mais útil porque o driver agora expõeorg.mongodb.scala.Observable[Unit]
em vez deorg.mongodb.scala.Observable[Void]
. Isso está relacionado a uma mudança radical sobre Observables nesta versão.
Mudanças comportamentais no 5.0
O método
getElapsedTime()
emcom.mongodb.event.ConnectionReadyEvent
inclui o tempo necessário para entregar oConnectionCreatedEvent
. Ou seja, o tempo retornado inclui a duração do métodocom.mongodb.event.ConnectionPoolListener.connectionCreated()
.Os métodos
getElapsedTime()
emcom.mongodb.event.ConnectionCheckedOutFailedEvent
ecom.mongodb.event.ConnectionCheckedOutEvent
incluem o tempo necessário para entregar ocom.mongodb.event.ConnectionCheckOutStartedEvent
. Ou seja, o tempo retornado inclui a duração do métodocom.mongodb.eventConnectionPoolListener.connectionCheckOutStarted()
.
Novos recursos no 5.0
A versão 5.0 do driver introduz os seguintes recursos:
Adiciona suporte para a opção
authorizedCollection
do comandolistCollections
. Isso foi feito alterando os métodoscom.mongodb.client.MongoDatabase.listCollectionNames()
. O tipo de retorno agora écom.mongodb.client.ListCollectionNamesIterable
, enquanto anteriormente era umMongoIterable<String>
. Esta alteração permite que o valor de retorno seja configurado utilizando o métodoListCollectionNamesIterable.authorizedCollections()
e especificando a opçãoauthorizedCollections
. Foram feitas alterações equivalentes nas seguintes classes e interfaces:com.mongodb.reactivestreams.client.MongoDatabase
org.mongodb.scala.MongoDatabase
com.mongodb.kotlin.client.MongoDatabase
com.mongodb.kotlin.client.coroutine.MongoDatabase
Essas alterações introduzem uma alteração de quebra binária no método listCollectionsNames(). Para obter mais informações sobre o método
MongoDatabase.listCollectionNames()
e a opçãoauthorizedCollections
, consulte a página de manual listCollections MongoDB Server ou Obter uma lista de coleções.
Novidades no 4.11
Esta seção inclui as seguintes informações:
Depreciações na versão 4.11
Aviso
Depreciações nesta versão
Para evitar alterações significativas em futuras versões principais do driver, substitua qualquer código de aplicativo que dependa de métodos e tipos preteridos.
A versão 4.11 do driver substitui os seguintes itens:
Os métodos de instância
getStats()
eisCapped()
da classeDBCollection
são preteridos. Os comandos de servidor correspondentes são preteridos no MongoDB v6.2 e posterior. Use o estágio do aggregation pipeline do$collStats
para recuperar as informações fornecidas por esses métodos. Você pode executar a agregação como mostrado no seguinte exemplo de código:Cursor cursor = collection.aggregate(Arrays.asList( new BasicDBObject("$collStats", new BasicDBObject("storageStats", new BasicDBObject()))), AggregationOptions.builder().build() ); Para determinar se uma coleção é uma coleção limitada, acesse o valor do campo
storageStats.capped
retornado pela instânciaCursor
na agregação de exemplo anterior.Para saber mais sobre o operador de agregação do
$collStats
, consulte a entrada manual do servidor $collStats (agregação).Os seguintes métodos relacionados ao endereço de rede são preteridos e serão removidos na v5.0:
O ServerAddress métodos
getSocketAddress()
egetSocketAddresses()
.Em vez de
getSocketAddress()
, utilize o método de instânciagetByName()
dejava.net.InetAddress
.Em vez de
getSocketAddresses()
, utilize o método de instânciagetAllByName()
dejava.net.InetAddress
.O UnixServerAddress método
getUnixSocketAddress()
.Em vez de
getUnixSocketAddress()
, construa uma instância dejnr.unixsocket.UnixSocketAddress
. Passe o caminho completo do arquivo de soquete UNIX para o construtor. Por padrão, o MongoDB cria um arquivo de soquete UNIX localizado em"/tmp/mongodb-27017.sock"
. Para saber mais sobre oUnixSocketAddress
, consulte o UnixSocketAddress Documentação da API.
Os seguintes métodos e tipos relacionados à StreamFactory interface são preteridas e programadas para remoção na v5.0:
streamFactoryFactory()
método deMongoClientSettings.Builder
getStreamFactoryFactory()
método deMongoClientSettings
NettyStreamFactoryFactory
classeNettyStreamFactory
classeAsynchronousSocketChannelStreamFactory
classeAsynchronousSocketChannelStreamFactoryFactory
classeBufferProvider
classeSocketStreamFactory
classeStream
classeStreamFactory
classeStreamFactoryFactory
classeTlsChannelStreamFactoryFactory
classe
Se você configurar o Netty utilizando
MongoClientSettings.Builder.streamFactoryFactory()
, seu código poderá se assemelhar ao seguinte:import com.mongodb.connection.netty.NettyStreamFactoryFactory; // ... MongoClientSettings settings = MongoClientSettings.builder() .streamFactoryFactory(NettyStreamFactoryFactory.builder().build()) .build(); Substitua este código pelo TransportSettings.nettyBuilder() como mostrado no exemplo a seguir:
import com.mongodb.connection.TransportSettings; // ... MongoClientSettings settings = MongoClientSettings.builder() .transportSettings(TransportSettings.nettyBuilder().build()) .build();
Novos recursos na versão 4.11
Os novos recursos da versão 4.11 do driver incluem:
Suporte para conexão ao MongoDB usando um proxy SOCKS5. Para saber mais, consulte Conectar ao MongoDB usando um proxy SOCKS5.
Foi adicionado o método
getSplitEvent()
à classeChangeStreamDocument
para identificar fragmentos de um evento de fluxo de alteração que excede 16 MB. Você deve usar o estágio de agregação$changeStreamSplitLargeEvent
em seu fluxo de alterações para lidar com eventos que excedam 16 MB. Para saber mais, consulte Dividir eventos de transmissão de grande mudança.Foi adicionado um construtor de estágio de aggregation para
$vectorSearch
. Para saber mais, consulte Atlas Vector Search.Foram adicionados auxiliares de gerenciamento de índices do Atlas Search. Para saber mais, consulte Índices de Atlas Search.
Versões atualizadas da biblioteca de compressão Snappy e Zstd. Para saber mais sobre as versões de dependência atuais, consulte Compressão de rede.
Foram adicionados métodos
getElapsedTime()
às seguintes classes para monitorar a duração dos eventos do pool de conexões:Suporte para threads virtuais Java 21 e simultaneidade estruturada. Os componentes internos do driver foram atualizados para evitar a fixação desnecessária de threads virtuais e para preservar o status de interrupção de um thread, já que esse último é importante para a simultaneidade estruturada, onde é usado para cancelamento.
Para saber mais sobre os threads virtuais, consulte a seção Threads virtuais proposta de aprimoramento do JDK. Para saber mais sobre simultaneidade estruturada, consulte a seção SimultaneidadeEstruturada proposta de aprimoramento do JDK.
Documentação da API atualizada para os seguintes tipos:
Novidades no 4.10
As novas funcionalidades da versão do driver do 4,10 incluem:
Implementação dos métodos
Accumulators.percentile()
eAccumulators.median()
para agregações estatísticas.As interfaces no pacote
com.mongodb.client.model.search
agora são marcadas como@Sealed
em vez de@Evolving
. Interfaces seladas não devem ser estendidas ou implementadas pelos consumidores da biblioteca.Resolvido um problema em que o driver emitia mensagens de registro duplicadas para operações de repetição. O driver emite agora corretamente uma mensagem de registo para cada nova tentativa de operação.
A interface
org.bson.codecs.Parameterizable
está obsoleta. Em vez de implementar essa interface em um tipo deCodec
personalizado, substitua o métodoCodecProvider.get()
noCodecProvider
do codec se o codec for destinado a um tipo parametrizado.Suporte para resolvedores de DNS personalizados.
Suporte para Queryable Encryption (QE). Para saber mais sobre os requisitos para usar o recurso QE, consulte a Queryable Encryption Driver Compatibility Table.
Novidades no 4.9
Importante
As operações de expressão de aggregation estão em versão beta
Esta versão do driver introduz uma API para criar expressões de aggregation. Este recurso está na fase beta.
Os novos recursos da versão do driver 4.9 incluem:
Foi adicionada uma nova exceção para identificar quando um construtor anotado pelo
BsonCreator
contém parâmetros com anotações diferentes deBsonProperty
ouBsonId
.Foi alterado o formato da mensagem de registro para mensagens de monitoramento de comando relatadas pelo pacote
org.mongodb.driver.protocol.command
.Adição de suporte para o estágio de pipeline de agregação
$documents
à classe auxiliar Aggregates.Adicionado MongoClientSettings.Builder.applyToLoggerSettings() e LoggerSettings.Builder.maxDocumentLength() métodos que permitem especificar um comprimento máximo para a representação JSON estendida de um documento BSON em uma mensagem de registro.
4.8: quais as novidades
Aviso
Alterações significativas na v4.8
O driver v4.8 contém alterações significativas. Para obter mais informações, consulte Alterações de ruptura da versão 4.8 e Alterações de suporte da versão 4.8 do servidor.
Importante
Aviso de depreciação
As classes MapCodec
e IterableCodec
estão obsoletas. Em vez de MapCodec
, use MapCodecProvider
. Em vez de IterableCodec
, use CollectionCodecProvider
ou IterableCodecProvider
para tipos de Iterable
que não são tipos Collection
.
As mudanças comportamentais com a versão 4.8 do driver incluem:
Requisito que você adicione uma dependência explícita no módulo
org.bson.codecs.record
se seu aplicativo distribuir o driver em um container OSGi e depender do driver para codificar e decodificar registros Java.Registro de novas mensagens de conexão no nível
DEBUG
em vez de emINFO
.
Os novos recursos da versão do driver 4.8 incluem:
Suporte para autenticação com AWS. O driver tem uma dependência opcional do AWS SDK versão 1 e versão 2.
Suporte para obter credenciais do ambiente para GCP e Azure para criptografia em uso.
Suporte para desserialização de registros contendo componentes com parâmetros genéricos.
Suporte para desserialização de registros contendo componentes com tipos de contêiner mais específicos, como
SortedSet
,NavigableMap
,LinkedList
ouTreeSet
.Suporte para tipos de registro recursivos, registros cujas definições de tipo contêm ciclos.
Inclusão do campo
disambiguatedPaths
nos eventos de atualização do stream de alterações quando o recurso de servidorshowExpandedEvents
está ativado no MongoDB v6.1 e posterior. Saiba mais sobre este campo em getDisambiguatedPaths() Documentação da API. Saiba mais sobre a configuraçãoshowExpandedEvents
na documentação do servidor Expanded Events .
Novidades no 4.7.1
O driver 4.7.1 corrige um bug que afeta a criptografia no nível do campo do lado do cliente e a Queryable Encryption. O bug pode causar corrupção de dados ao girar Chaves de criptografia de dados (DEKs) criptografadas com uma Chave mestre do cliente hospedada no Google Cloud Key Management Service ou Azure Key Vault. O bug estava presente na versão 4.7.0 do driver no método RewrapManyDataKey
e causa a perda de suas DEKs.
Importante
Faça backup da sua coleção do Key Vault
Sempre faça o backup de sua coleção de cofre de chaves antes de fazer a rotação dos DEKs. Se você perder seus DEKs, perderá acesso a todos os dados criptografados com essas chaves.
O que há de novo em 4.7
Aviso
Alterações significativas na v4.7
O driver v4.7 contém alterações significativas. Consulte Alterações importantes na versão 4.7 para obter mais informações.
Os novos recursos da versão do driver 4.7 incluem:
Suporte completo adicionado para MongoDB 6.0.
Adicionadas as seguintes melhorias de suporte ao fluxo de mudança:
Suporte aprimorado pré e pós-imagem para fluxos de alteração. Os auxiliares de observação de fluxo de alteração agora aceitam
whenAvailable
erequired
para a opçãofullDocument
. Consulte a documentação de referência do fluxo de alterações para obter mais informações.Foi adicionada uma nova opção
fullDocumentBeforeChange
, que aceitawhenAvailable
erequired
.Alterar eventos agora inclui um campo
fullDocumentBeforeChange
quando configurado para exibição em sua coleção MongoDB.Adicionado suporte
showExpandedEvents
para fluxos de mudança.Adicionado suporte
wallTime
à classeChangeStreamDocument
.
Suporte de criação de índice agrupado adicionado.
Suporte para novos recursos relacionados à criptografia Queryable Encryption, incluindo suporte para criptografia automática (MongoDB v6.0 Enterprise ou posterior é necessário) e criptografia manual.
Suporte para a nova biblioteca compartilhada do Queryable Encryption, que remove a necessidade do
mongocryptd
processo do . A biblioteca compartilhada de criptografia consultável exige org.mongodb:mongodb-crypt versão1.5.1.1
ou posterior.
Foi adicionada uma nova API para o gerenciamento de chaves de criptografia.
Foram adicionados métodos de API do construtor para mais estágios de agregação, incluindo
$search
/$searchMeta
(somente Atlas),$densify
e$fill
. Saiba mais sobre esses métodos na página Construtor de agregados.Foi adicionada a anotação
BsonExtraElements
que pode ser usada com codificação e decodificação POJO.BsonExtraElements
permite decodificar objetos que podem receber novos campos no futuro sem exigir que os desenvolvedores mapeiem explicitamente esses novos campos.Otimizações de desempenho, incluindo:
Implementações sem travamento do pool de sessão do servidor e do pool de buffer.
Uma nova implementação de limpeza de
DBCursor
que usa a API Cleaner do Java em vez de finalização, disponível no Java 9 ou posterior.
A API do construtor setWindowFields não é mais um recurso beta. Mudanças na API quebram a compatibilidade binária e de origem. Consulte Alterações importantes na versão 4.7 para obter mais informações.
4.6: quais as novidades
As novas funcionalidades da versão do driver Java 4,6 incluem:
O buffer pool agora é compartilhado por todas as
MongoClient
instâncias. O conjunto de buffers remove buffers que ficaram inativos por um minuto.Foi adicionada uma API para especificar fornecedores de credenciais do AWS KMS para criptografia em nível de campo do lado do cliente (CSFLE). Consulte o AutoEncryptionSettings.Builder.kmsProviderPropertySuppliers() e os clientEncryptionSettings.Builder.kmsProviderPropertySuppliers() Documentação da API para obter mais informações.
Compatibilidade adicionada ao
org.mongodb:mongodb-crypt
, uma dependência do CSFLE, para hardware baseado em ARM1 da Apple.Foi adicionada uma interface de provedor de serviços (SPI) para permitir que o driver especifique um cliente DNS personalizado. Consulte a documentação da API da interface DnsClient e DnsClientProvider para obter mais informações.
Adicionado suporte de driver para codificação e decodificação entre registros Java e documentos BSON, que estão habilitados por padrão. Consulte Formato de dados do documento: registros para obter mais informações.
Novidades no 4.5.1
Se o servidor DNS retornar um erro de NXDomain, indicando um domínio inexistente, o driver do 4,5,1 não lançará mais uma exceção.
Novidades no 4.5
As novas funcionalidades da versão 4,5 do driver Java incluem:
Foi adicionado suporte para especificar nomes de serviços personalizados de registros de recursos SRV. Consulte a configuração do
srvServiceName
no guia Opções de Conexão para mais informações.Foi adicionado suporte para personalizar a representação de UUID em um registro de codec usando o método
CodecRegistries.withUuidRepresentation()
.Adicionado suporte para substituir as configurações de ouvinte nos construtores
ClusterSettings
,ServerSettings
eConnectionPoolSettings
.Todos os eventos recebidos por
ClusterListener
,ServerListener
eServerMonitorListener
agora são totalmente ordenados usando uma relação happens-before quando os ouvintes não são compartilhados por instâncias diferentes do MongoClient. Para saber mais sobre a ordem antes de acontecer,consulte Ordem antes deacontecer na Especificação da linguagem Java.Foram adicionadas classes
EnumCodec
eEnumCodecProvider
para separar o suporte de codec para tipos deenum
da classePojoCodec
. Os registros de codec padrão, que você pode acessar a partir das interfaces doMongoClientSettings
eBson
, agora incluem as classes de codec doenum
. Se o seu aplicativo usar um codec de enumeração personalizado e um dos registros padrão, certifique-se de ordená-los conforme descrito na seção sobre substituição de codecs.Resolveu problemas de desempenho que afetaram as versões 4.4 e 4.3 do driver. O desempenho nesta versão é semelhante ao desempenho em 4.2.
Foi resolvido um problema no qual os erros originados da recuperação da descrição do cluster não eram passados para a chamada de resposta do assinante
onError
Foi resolvido um problema com a liberação de instâncias
ByteBuf
quando você se conecta com a compactação habilitada.Foi removida uma dependência desnecessária dos pacotes
javax.annotation.*
do pacoteorg.mongodb.driver-core
OSGi.
O que há de novo em 4.4
As novas funcionalidades da versão do driver do 4,4 Java incluem:
Compatibilidade com MongoDB 5.1 e suporte para Java 17
Adicionado suporte para dicas de índice em um
AggregateIterable
Adicionado suporte para os estágios de agregação
$merge
e$out
em secundáriosUso do método
mergeObjects()
no construtorUpdates
DocumentCodec
não ignora um CodecRegistry ao escrever em uma instância doIterable
ouMap
Novidades no 4.3
As novas funcionalidades da versão do driver do 4,3 Java incluem:
Suporte adicionado para a API estável do MongoDB. Para obter mais informações, consulte nosso Guia de API estável.
Observação
A partir de fevereiro de 2022, a API Versionada é conhecida como a API estável. Todos os conceitos e funcionalidades permanecem os mesmos com essa mudança de nomenclatura.
Suporte adicionado para conexão com Instâncias sem servidor do MongoDB Atlas. Para obter mais informações sobre a instalação, consulte nossa documentação sobre como criar uma nova instância sem servidor
Foi adicionada uma API de construtor para o estágio de pipeline
setWindowFields
para permitir o uso de operadores de janelaSuporte adicionado para configurar Netty io.netty.handler.ssl.SslContext
Adicionado suporte para leituras de snapshots para
ClientSession
Taxa limitada de estabelecimento de novas conexões por pool de conexões
Removeu a maioria das restrições aos caracteres permitidos nos nomes dos campos dos documentos que você insere ou substitui. Essa é uma mudança comportamental para qualquer aplicativo que dependa da aplicação dessas restrições pelo lado do cliente.
A tabela a seguir mostra o status de restrição em caracteres permitidos nos nomes de campo dos documentos:
Personagem | (operação) | Descrição |
---|---|---|
. | Inserir e substituir | Removidas restrições em nomes de campos que contêm este caractere. |
$ | Inserir | Foram removidas as restrições aos nomes de campos que começam com esse caractere. |
$ | Substituir | Restrições removidas em documentos aninhados em nomes de campo que contêm este caractere. |
$ | Substituir | Manteve restrições em documentos de nível superior sobre nomes de campo que começam com esse caractere. Isso evita o uso acidental de uma operação de substituição quando a intenção era usar uma operação de atualização. |
Observação
Gravações não confirmadas usando chaves com prefixo em dólar ou pontilhadas podem ser rejeitadas silenciosamente até a versão anterior à versão 5.0 servidores, onde algumas restrições aos nomes dos campos ainda são aplicadas no servidor.
4.2: quais as novidades
Aviso
Alterações significativas na v4.2
O driver v4.2 contém alterações significativas. Consulte as Alterações significativas na versão 4.2 para obter mais informações.
As novas funcionalidades da versão 4.2 do driver Java incluem:
Adição de armazenamentos de chaves do Azure e do GCP à criptografia no nível do campo no lado do cliente
Adição de tickets de cache Kerberos para reutilização em várias solicitações de autenticação
MongoClients adicionados instâncias com
MongoClientSettings
ouConnectionString
como a configuraçãoAdição de um JsonObject classe para tornar a codificação e a decodificação para JSON mais eficientes, evitando uma representação intermediária do mapa
Adição de uma BsonRepresentação anotação que permite representar os
ObjectId
valores BSON comoString
no POJO aulasAdição de um arquivo Filters.empty() método
Novidades no 4.1
As novas funcionalidades da versão do driver do 4.1 Java incluem:
Redução significativa nos tempos de failover percebidos pelo cliente durante eventos de manutenção planejados
Os métodos update() e delete() agora suportam dicas de índice
O método
find()
é compatível com allowDiskUse() para tipos que exigem muita memória para serem executados na RAMFoi adicionado suporte ao mecanismo de autenticação MONGODB-AWS usando as credenciais do Amazon Web Services (AWS) Identity e Access Management (IAM)
A autenticação exige menos viagens de ida e volta para o servidor, resultando em uma configuração de conexão mais rápida
4.0: quais as novidades
Aviso
Alterações significativas na v4.0
O driver v4.0 contém alterações significativas. Consulte Mudanças recentes na versão 4.0 para obter mais informações.
Esta versão não adiciona novos recursos.