Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java

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:

  • Versão 5.1.1

  • Versão 5.1

  • Versão 5.0

  • Versão 4.11

  • Versão 4.10

  • Versão 4.9

  • Versão 4.8

  • Versão 4.7.1

  • Versão 4.7.0

  • Versão 4.6

  • Versão 4.5.1

  • Versão 4.5

  • Versão 4.4

  • Versão 4.3

  • Versão 4.2

  • Versão 4.1

  • Versão 4.0

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 string authMechanismProperties . 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 e GridFSUploadStream usam o tipo BsonDocument em vez de Document.

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:

  • 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.

  • 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.

  • 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 .

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:

  • O método org.mongodb.scala.Observable.completeWithUnit() está obsoleto. Esse método não é mais útil porque o driver agora expõe org.mongodb.scala.Observable[Unit] em vez de org.mongodb.scala.Observable[Void]. Isso está relacionado a uma mudança radical sobre Observables nesta versão.

  • O método getElapsedTime() em com.mongodb.event.ConnectionReadyEvent inclui o tempo necessário para entregar o ConnectionCreatedEvent. Ou seja, o tempo retornado inclui a duração do método com.mongodb.event.ConnectionPoolListener.connectionCreated() .

    Os métodos getElapsedTime() em com.mongodb.event.ConnectionCheckedOutFailedEvent e com.mongodb.event.ConnectionCheckedOutEvent incluem o tempo necessário para entregar o com.mongodb.event.ConnectionCheckOutStartedEvent . Ou seja, o tempo retornado inclui a duração do método com.mongodb.eventConnectionPoolListener.connectionCheckOutStarted() .

A versão 5.0 do driver introduz os seguintes recursos:

  • Adiciona suporte para a opção authorizedCollection do comando listCollections . Isso foi feito alterando os métodos com.mongodb.client.MongoDatabase.listCollectionNames() . O tipo de retorno agora é com.mongodb.client.ListCollectionNamesIterable, enquanto anteriormente era um MongoIterable<String>. Esta alteração permite que o valor de retorno seja configurado utilizando o método ListCollectionNamesIterable.authorizedCollections() e especificando a opção authorizedCollections . 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ção authorizedCollections , consulte a página de manual listCollections MongoDB Server ou Obter uma lista de coleções.

Esta seção inclui as seguintes informações:

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() e isCapped() da classe DBCollection 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ância Cursor 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() e getSocketAddresses().

      Em vez de getSocketAddress(), utilize o método de instância getByName() de java.net.InetAddress.

      Em vez de getSocketAddresses(), utilize o método de instância getAllByName() de java.net.InetAddress.

    • O UnixServerAddress método getUnixSocketAddress().

      Em vez de getUnixSocketAddress(), construa uma instância de jnr.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 o UnixSocketAddress, 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 de MongoClientSettings.Builder

    • getStreamFactoryFactory() método de MongoClientSettings

    • NettyStreamFactoryFactory classe

    • NettyStreamFactory classe

    • AsynchronousSocketChannelStreamFactory classe

    • AsynchronousSocketChannelStreamFactoryFactory classe

    • BufferProvider classe

    • SocketStreamFactory classe

    • Stream classe

    • StreamFactory classe

    • StreamFactoryFactory classe

    • TlsChannelStreamFactoryFactory 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();

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() à classe ChangeStreamDocument 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:

As novas funcionalidades da versão do driver do 4,10 incluem:

  • Implementação dos métodos Accumulators.percentile() e Accumulators.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 de Codec personalizado, substitua o método CodecProvider.get() no CodecProvider 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.

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 de BsonProperty ou BsonId.

  • 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.

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 em INFO.

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 ou TreeSet.

  • 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 servidor showExpandedEvents está ativado no MongoDB v6.1 e posterior. Saiba mais sobre este campo em getDisambiguatedPaths() Documentação da API. Saiba mais sobre a configuração showExpandedEvents na documentação do servidor Expanded Events .

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.

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 e required para a opção fullDocument . 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 aceita whenAvailable e required.

    • 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 à classe ChangeStreamDocument .

  • 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ão 1.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.

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.

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.

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 e ConnectionPoolSettings.

  • Todos os eventos recebidos por ClusterListener, ServerListener e ServerMonitorListener 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 e EnumCodecProvider para separar o suporte de codec para tipos de enum da classe PojoCodec. Os registros de codec padrão, que você pode acessar a partir das interfaces do MongoClientSettings e Bson, agora incluem as classes de codec do enum. 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 pacote org.mongodb.driver-core OSGi.

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ários

  • Uso do método mergeObjects() no construtor Updates

  • DocumentCodec não ignora um CodecRegistry ao escrever em uma instância do Iterable ou Map

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 janela

  • Suporte 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.

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 ou ConnectionString como a configuração

  • Uso do explain() método ao encontrar e agregar comandos

  • Adiçã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 como String no POJO aulas

  • Adição de um arquivo Filters.empty() método

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 RAM

  • Foi 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

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.

← Referência rápida