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

NOVIDADES

Nesta página

  • Novidades no 5.2
  • Novidades em 5.1.3
  • Novidades em 5.1.2
  • Novidades em 5.1.1
  • Novidades no 5.1
  • Novidades no 5.0
  • Novidades no 4.11
  • Novidades no 4.10

Descubra as novidades de cada versão:

  • Versão 5.2

  • Versão 5.1.3

  • Versão 5.1.2

  • Versão 5.1.1

  • Versão 5.1

  • Versão 5.0

  • Versão 4.11

  • Versão 4.10

Importante

Remoção de suporte para o MongoDB Server 3.6

O driver Java v5.2 remove o suporte para o MongoDB 3.6 Server. Para saber mais sobre versões compatíveis do servidor, consulte Compatibilidade.

A versão do driver 5.2 inclui as seguintes alterações, correções e recursos:

  • Um caractere de barra invertida (/) entre os nomes do host e as opções do cliente em um URI de conexão é opcional. O driver analisa os seguintes exemplos de URI de conexão da mesma maneira:

    // Connection URI with delimiting forward-slash
    String uri = "mongodb://example.com/?w=majority";
    // Connection URI without delimiting forward-slash
    String uri = "mongodb://example.com?w=majority";
  • Adiciona a classe SearchIndexType , que você pode passar ao construir uma instância do SearchIndexModel . Esta alteração permite a você especificar o tipo de índice ao criar um índice de Atlas Search ou Vector Search . Para saber mais, consulte Índices de Atlas Search e Vector Search no guia Índices.

  • Delega a implementação dos algoritmos que implementam os mecanismos de autenticação SCRAM-SHA-1 e SCRAM-SHA-256 ao provedor JCA configurado. Essa alteração significa que seu aplicação pode usar um provedor JCA configurado compatível com FIPS para fornecer um nível mais alto de segurança.

  • Revisa a versão da dependência mongodb-crypt para corresponder à versão dos drivers da JVM . Versões futuras do mongodb-crypt serão lançadas junto com o driver e compartilharão o mesmo número de versão. Você deve atualizar sua mongodb-crypt dependência para v5.2.0 ao atualizar seu driver para esta versão. Para saber mais, consulte o guia criptografia em execução em execução.

  • Melhorias de desempenho devido à implementação de criptografia nativa em todas as plataformas suportadas. A lista a seguir descreve as ações necessárias para implementar essa melhoria dependendo do seu sistema operacional:

    • Windows: atualize sua versão do mongodb-crypt para v5.2.0.

    • Mac: atualize sua versão do mongodb-crypt para v5.2.0.

    • Linux: instale libmongocrypt.so diretamente no sistema de arquivos, em vez de usar o arquivo fornecido com o arquivo JAR mongodb-crypt . Você pode encontrar instruções do Linux para instalar o libmongocrypt no manual do Servidor. Se você usar um gerenciador de pacote para instalar o libmongocrypt, o Java Native Access (JNA) o encontrará lá sem configurações adicionais. Como alternativa, você pode especificar o caminho da pesquisa definindo a variável de ambiente LD_LIBRARY_PATH para o caminho do arquivo do pacote libmongocrypt .

      Recomendamos a instalação direta porque a biblioteca compartilhada agrupada não está vinculada ao OpenSSL devido ao potencial de incompatibilidades binárias do OpenSSL.

      O carregamento da biblioteca compartilhada é tratado pelo JNA. Você pode visualizar as regras para a ordem do caminho da pesquisa de carregamento da biblioteca na documentação da classe NativeLibrary.

  • Corrige um problema que fazia com que os métodos InsertOneResult.getInsertedId() e InsertManyResult.getInsertedIds() retornassem IDs de documento incorretos em algumas situações. Esta alteração é backported para o driver Java v5.1.4 e v4.11.4.

  • Quando uma operação de cluster fragmentado não obtém êxito, o driver evita selecionar o mesmo servidor mongos para tentativas de repetição de operação se outros servidores mongos estiverem disponíveis.

  • Adiciona metadados de acessibilidade necessários quando seu aplicação usa Imagem nativa do GraalVM. Esses metadados substituem a necessidade de coletar metadados de acessibilidade ao usar as bibliotecas de drivers. Para saber mais, consulte Metadados de Acessibilidade na documentação do GraalVM.

    Essa alteração não adiciona as entradas de recursos libjnidispatch e libmongocrypt , porque a adição de entradas para todas as plataformas suportadas (destinos) afeta significativamente o tamanho dos executáveis nativos criados usando a GraalVM Native Imagem. Veja esta amostra resource-config.json no repositório do driver Github para ver como especificar essas entradas explicitamente se seu aplicação depender da org.mongodb:mongodb-crypt biblioteca.

  • Ativa a pesquisa vetorial exata estendendo a API VectorSearchOptions para introduzir os seguintes subtipos de opção específicas:

    • ExactVectorSearchOptions: use esse tipo de opções para habilitar a correspondência precisa, garantindo que os resultados sejam os vetores mais próximos de um determinado vetor de consulta.

    • ApproximateVectorSearchOptions: use este tipo de opções para habilitar pesquisas que podem não retornar os vetores exatos mais próximos. Você pode passar um parâmetro numCandidates ao instanciar esse tipo para especificar o número de vizinhos mais próximos a serem considerados.

    Para saber mais sobre como usar o recurso Atlas Vector Search , consulte Atlas Vector Search no guia Aggregates Builders.

O 5.1.3 a versão do patch do driver inclui as seguintes alterações:

  • Corrige um problema que pode causar erros de asserção ao usar Cursor tipos.

O 5.1.2 a versão do patch do driver inclui as seguintes alterações:

  • Corrige um problema que impede o driver de codificar e decodificar classes concretas que estendem classes de base genéricas, nos casos em que você especifica a classe de base como o tipo genérico da instância MongoCollection .

  • Corrige um problema relacionado a como os nomes de domínio são validados quando você usa a funcionalidade de proxy do SOCKS5 , permitindo usar nomes de domínio com mais de seis caracteres no domínio de nível superior.

O 5.1.1 a versão do patch do driver inclui as seguintes alterações:

  • Ao usar o mecanismo de autenticação MONGODB-OIDC , você não deve incluir vírgulas no valor da string de conexão 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:

  • O suporte para o MongoDB Server v3.6 está obsoleto e será removido na próxima versão do driver. Para saber como atualizar seu sistema do MongoDB Server , consulte Notas de versão no manual do MongoDB Server .

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

Observação

O v5.0.2 A versão de patch corrigiu um problema relacionado a como os nomes de domínio são validados quando você usa a funcionalidade de proxy do SOCKS5 , permitindo usar nomes de domínio com mais de seis caracteres no domínio de nível superior.

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 a documentação da API UnixSocketAddress.

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

Observação

O v4.11.3 A versão de patch corrigiu um problema relacionado a como os nomes de domínio são validados quando você usa a funcionalidade de proxy do SOCKS5 , 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 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.

Voltar

Referência rápida