Descubra as novidades de cada versão:
Novidades no 5.0
Aviso
Alterações significativas nesta versão
Esta versão do driver apresenta alterações significativas. Para obter uma lista dessas alterações, consulte a seção Versão 5.0 Alterações significativas 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. Este 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 significativa nos Observables nesta versão.
Mudanças comportamentais no 5.0
O método
getElapsedTime()emcom.mongodb.event.ConnectionReadyEventinclui 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.ConnectionCheckedOutFailedEventecom.mongodb.event.ConnectionCheckedOutEventincluem 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
authorizedCollectiondo 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.MongoDatabaseorg.mongodb.scala.MongoDatabasecom.mongodb.kotlin.client.MongoDatabasecom.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 classeDBCollectionsão preteridos. Os comandos de servidor correspondentes são preteridos no MongoDB v6.2 e posterior. Use o estágio do aggregation pipeline do$collStatspara 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.cappedretornado pela instânciaCursorna 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 método UnixServerAddress
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 a documentação da API UnixSocketAddress.
Os seguintes métodos e tipos relacionados à interface StreamFactory foram preteridos e agendados para remoção na v5.0:
streamFactoryFactory()método deMongoClientSettings.BuildergetStreamFactoryFactory()método deMongoClientSettingsNettyStreamFactoryFactoryclasseNettyStreamFactoryclasseAsynchronousSocketChannelStreamFactoryclasseAsynchronousSocketChannelStreamFactoryFactoryclasseBufferProviderclasseSocketStreamFactoryclasseStreamclasseStreamFactoryclasseStreamFactoryFactoryclasseTlsChannelStreamFactoryFactoryclasse
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 corrigido um problema relacionado a como os nomes de domínio são validados quando você usa a funcionalidade proxy, permitindo usar nomes de domínio com mais de seis caracteres no domínio de nível superior.
Foi adicionado o método
getSplitEvent()à classeChangeStreamDocumentpara identificar fragmentos de um evento de fluxo de alteração que excede 16 MB. Você deve usar o estágio de agregação$changeStreamSplitLargeEventem 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 threads virtuais, consulte a proposta de aprimoramento do JDK de threads virtuais. Para saber mais sobre simultaneidade estruturada, consulte a proposta de aprimoramento JDK de simultaneidade estruturada.
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.searchagora são marcadas como@Sealedem 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.Parameterizableestá obsoleta. Em vez de implementar essa interface em um tipo deCodecpersonalizado, substitua o métodoCodecProvider.get()noCodecProviderdo 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
BsonCreatorcontém parâmetros com anotações diferentes deBsonPropertyouBsonId.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 os métodos MongoClientSettings.Builder.applyToLoggerSettings() e LoggerSettings.Builder.maxDocumentLength() 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. Consulte Versão 4.8 Alterações significativas e Versão do driver 4.8 Alterações de suporte da versão do servidor para obter mais informações.
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.recordse 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
DEBUGem 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,LinkedListouTreeSet.Suporte para tipos de registro recursivos, registros cujas definições de tipo contêm ciclos.
Inclusão do campo
disambiguatedPathsnos eventos de atualização do stream de alterações quando o recurso de servidorshowExpandedEventsestá ativado no MongoDB v6.1 e versões posteriores. Saiba mais sobre este campo na documentação da API getDisambiguatedPaths(). Saiba mais sobre a configuraçãoshowExpandedEventsna documentação do servidor Expanded Events.
Novidades no 4.7.1
O 4.7.1 driver corrige um bug que afeta a criptografia em nível de 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 GCP KMS ou Azure Key Vault. O bug estava presente na versão 4.7.0 do driver no método RewrapManyDataKey e causa a perda dos seus 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
whenAvailableerequiredpara 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 aceitawhenAvailableerequired.Alterar eventos agora inclui um campo
fullDocumentBeforeChangequando configurado para exibição em sua coleção MongoDB.Adicionado suporte
showExpandedEventspara fluxos de mudança.Adicionado suporte
wallTimeà classeChangeStreamDocument.
Suporte de criação de índice agrupado adicionado.
Suporte para novos recursos relacionados à 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 processo do
mongocryptd. A biblioteca compartilhada do Queryable Encryption exige org.mongodb:mongodb-crypt versão1.5.1.1ou 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),$densifye$fill. Saiba mais sobre esses métodos na página Construtor de agregados.Foi adicionada a anotação
BsonExtraElementsque pode ser usada com codificação e decodificação POJO.BsonExtraElementspermite 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
DBCursorque 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
MongoClientinstâ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 a documentação da API para AutoEncryptionSettings.Builder.kmsProviderPropertySuppliers() e os clientEncryptionSettings.Builder.kmsProviderPropertySuppliers() 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.
Adição de suporte de driver para codificação e decodificação entre registros Java e documentos BSON, que é ativado 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
srvServiceNameno 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,ServerSettingseConnectionPoolSettings.Todos os eventos recebidos por
ClusterListener,ServerListenereServerMonitorListeneragora são totalmente ordenados usando uma relacionamento 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 de acontecer na especificação da linguagem Java.Foram adicionadas classes
EnumCodeceEnumCodecProviderpara separar o suporte de codec para tipos deenumda classePojoCodec. Os registros de codec padrão, que você pode acessar a partir das interfaces doMongoClientSettingseBson, 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
onErrorFoi resolvido um problema com a liberação de instâncias
ByteBufquando você se conecta com a compactação habilitada.Foi removida uma dependência desnecessária dos pacotes
javax.annotation.*do pacoteorg.mongodb.driver-coreOSGi.
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
AggregateIterableAdicionado suporte para os estágios de agregação
$mergee$outem secundáriosUso do método
mergeObjects()no construtorUpdatesDocumentCodecnão ignora um CodecRegistry ao escrever em uma instância doIterableouMap
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 .
Foi adicionada uma API de construtor para o estágio de pipeline
setWindowFieldspara permitir o uso de operadores de janelaSuporte adicionado para configurar Netty io.netty.handler.ssl.SslContext
Adicionado suporte para leituras de snapshots para
ClientSessionTaxa 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. |
$ | Insert | 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
Adicionadas instâncias MongoClients com
MongoClientSettingsouConnectionStringcomo configuraçãoFoi adicionada uma classe JSONObject para tornar a codificação e a decodificação para JSON mais eficientes, evitando uma representação intermediária do mapa
Foi adicionada uma anotação BsonRepresentation que permite representar os valores
ObjectIdBSON comoStringnas classes POJOAdição do método 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
A atualização () e a exclusão () os métodos 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.