Menu Docs
Página inicial do Docs
/ /
Referência

Notas de versão

Descubra as novidades de cada versão:

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:

  • O método org.mongodb.scala.Observable.completeWithUnit() está obsoleto. Este 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 significativa nos 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:

  • Os seguintes métodos e tipos relacionados à interface StreamFactory foram preteridos e agendados 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 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() à 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 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:

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

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.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 versões posteriores. Saiba mais sobre este campo na documentação da API getDisambiguatedPaths(). Saiba mais sobre a configuração showExpandedEvents na documentação do servidor Expanded Events.

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.

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 à 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ã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:

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

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

$

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.

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:

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

Voltar

Referência

Nesta página