ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Menu Docs

NOVIDADES

Descubra as novidades de cada versão:

A versão do driver Node.js v6.15 inclui os seguintes recursos:

  • Adiciona suporte para fornecer credenciais AWS personalizadas ao configurar autenticação ou In-criptografia em execução. Você deve fornecer a assinatura de função personalizada no seguinte formulário:

    () => Promise<AWS.Credentials>

    Você também pode especificar cadeias de fornecedores no AWS SDK, o que permite personalizar suas opções. Para ver exemplos de como fornecer credenciais personalizadas, consulte as Notas de versão v6.15.0 no GitHub.

  • Corrige um bug que fazia com que um MongoClient configurado para OIDC com AbortSignal fosse abortado no cursor quando o cliente se autenticasse novamente.

  • Corrige um bug que causava uma rejeitada não tratada a ser lançada quando um timeoutms expira antes de uma operação atingir o processo de seleção do servidor .

  • Corrige um bug causado pelo fechamento de um change stream durante o processamento de um evento de alteração . Esse bug causava um erro em potencial ao rejeitar uma promessa interna que representava a "próxima" alteração.

Para saber mais sobre esta versão, consulte as Notas da versão v6.15.0 no GitHub.

A versão do driver Node.js v6.14 inclui os seguintes recursos:

  • Adiciona suporte para o estágio de agregação $lookup em coleções criptografadas. Você deve atualizar seu pacote mongodb-client-encryption para v6.3.0 ou posterior para usar esse recurso.

  • Usa a implementação do driver do método isUint8Array() para evitar a importação do pacote util/types.

  • Reverte a compatibilidade de versão de @aws-sdk/credential-providers para v3.188.0.

Para saber mais sobre esta versão, consulte as Notas da versão v6.14.0 no GitHub.

A versão do driver Node.js v6.13 inclui os seguintes recursos:

  • Adiciona um novo registrador padronizado para permitir informações sobre as operações do banco de dados sem alterações de código. Você pode habilitar e configurar o registrador por meio de variáveis de ambiente, como mostrado no exemplo a seguir:

    env MONGODB_LOG_ALL=debug node server.mjs

    Para saber mais sobre registro, consulte o Guia de Registro.

  • Melhora o desempenho do monitoramento de comandos removendo cópias profundas de objetos de comando e resposta. A modificação dos valores de comando e resposta pode levar a um comportamento indefinido.

  • Adiciona um recurso experimental de sinal de cancelamento. Você pode passar o comando signal para os seguintes métodos para interromper a execução do método quando o sinal for acionado:

    • collection.find()

    • collection.findOne()

    • collection.aggregate()

    • collection.countDocuments()

    • db.listCollections()

    • db.command()

    Abortar um sinal fecha uma conexão, o que pode causar o restabelecimento desnecessário da conexão.

  • Para evitar possíveis erros de tempo limite de DNS, o driver captura e tenta novamente pesquisas de DNS ao resolver connection strings mongodb+srv://.

  • MongoClient.close() também fecha quaisquer cursores associados.

  • Você pode invocar MongoClient.close() simultaneamente, mas não recomendamos fazer isso se puder ser evitado.

  • Corrige um problema que fazia com que a autenticação MONGODB-OIDC não fosse autenticada corretamente se a negociação incluir autenticação especulativa.

Para saber mais sobre esta versão, consulte as Notas da versão v6.13.0 no GitHub.

A versão do driver Node.js v6.12 inclui os seguintes recursos:

  • Adiciona suporte para v2.0 do algoritmo de compressão zstd. Para obter mais informações sobre zstd v2.0, consulte as zstd Notas de versão no Github.

  • Atualiza o pacote bson para v6.10.1. Para obter mais informações sobre esta versão, consulte as v6.10.1 Notas de versão para o bson pacote no Github.

  • O driver preenche o campo ServerDescription.error com um tipo e uma mensagem de erro mais específicos ao marcar um membro primário do conjunto de réplicas obsoleto.

  • O driver lê dados de soquete com um fluxo no modo de objeto em vez do modo de buffer. Isso evita erros de análise de mensagens em casos raros causados por agrupamento de dados impreciso.

  • Se o driver encontrar um erro ao se conectar a um proxy de meias5, ele não envolverá mais o erro de meias5 em um MongoNetworkError. Isso impede que o driver encapsular um MongoNetworkError em outro MongoNetworkError.

Para saber mais sobre esta versão, consulte as Notas da versão v6.12.0 no GitHub.

A versão do driver Node.js v6.11 inclui os seguintes recursos:

  • Adiciona suporte para Node.js v22.

  • Adiciona o recurso de tempo limite de operações do lado do cliente (CSOT). Você pode usar o CSOT para aplicar um tempo limite único a todas as etapas necessárias para concluir uma operação do lado do servidor, incluindo seleção do servidor , verificação da conexão, serialização e execução do lado do servidor. Para saber mais, consulte o guia Limitar o tempo de execução do servidor.

    Observação

    Recurso experimental

    O recurso CSOT é experimental e pode mudar em futuras versões de drivers.

  • Adiciona suporte de autenticação OIDC para ambientes Kubernetes. Para saber mais sobre esse recurso, consulte a seção MONGODB-OIDC do guia Mecanismos de autenticação empresarial.

    Para usar o OIDC para autenticar a partir de um ambiente Kubernetes, defina a opção de conexão authMechanismProperties como ENVIRONMENT:k8s em sua string de conexão. Você pode usar esse recurso ao se conectar a um ambiente em execução no Elastic Kubernetes Service da Amazon, no Google Kubernetes Engine ou no Azure Kubernetes Service.

  • O pacote bson adiciona suporte para dados vetoriais binários. Para saber mais sobre esse recurso, consulte as v6.10.0 Release Notes para o bson pacote no Github.

  • O driver emite ConnectionClosedEvents após PoolClearedEvents.

Para saber mais sobre esta versão, consulte as Notas da versão v6.11.0 no GitHub.

A versão do driver Node.js v6.10 é a primeira versão oficial a oferecer suporte a todos os recursos do MongoDB Server 8.0 e inclui as seguintes melhorias e correções:

  • Remove o suporte para o MongoDB Server 3.6.

  • Adiciona suporte à API de gravação em massa do MongoDB Server 8.0, que oferece suporte a operações de gravação em massa em vários bancos de dados e collections em uma única chamada.

  • Permite nomes de host SRV com menos de três partes separadas por . caracteres. Por exemplo, o driver agora suporta nomes de host como mongodb+srv://mongodb.local.

  • Suporta maxTimeMS CRUD a opção optime explain para recuperar um valor preciso para comandos CRUD para descrever o optime . As opções de explicação para operações de localização e agregação estão obsoletas.

Para saber mais sobre esta versão, consulte as Notas da versão v6.10.0 no GitHub.

  • O suporte para o MongoDB Server 3.6 está obsoleto e será removido em uma futura versão do driver.

  • O driver suporta nativamente o gerenciamento explícito de recursos para cursores e os objetos MongoClient, ClientSession e ChangeStream . Ao usar uma versão compatível do Node.js , você pode implementar o gerenciamento explícito de recursos usando o método cursor.stream() e a classe GridFSDownloadStream .

    Para saber como usar o gerenciamento explícito de recursos, consulte as Notas de versão do v6.9.0 no Github. Para obter mais informações sobre o gerenciamento explícito de recursos, consulte a proposta de gerenciamento explícito de recursos da ECMAScript no Github.

  • Se você estiver usando o Node.js 18.13 ou posterior, poderá passar as opções autoSelectFamily e autoSelectFamilyTimeout para o construtor MongoClient . Quando a opção autoSelectFamily é true, o driver seleciona automaticamente entre uma conexão IPv4 ou IPv6 . A opção autoSelectFamilyTimeout especifica o tempo limite, em milissegundos, para o driver selecionar a família de conexões.

    O seguinte exemplo de código mostra como usar estas opções:

    const client = new MongoClient(uri,
    { autoSelectFamily: true, autoSelectFamilyTimeout: 100 });
  • O construtor do MongoClient aceita a opção allowPartialTrustChain . Esta opção controla o sinalizador X509_V_FLAG_PARTIAL_CHAIN OpenSSL.

  • O ConnectionCheckedOutEvent e o ConnectionCheckFailedEvent agora incluem uma propriedade durationMS . Essa propriedade indica o tempo decorrido entre o início e o fim de uma operação de checkout de conexão.

  • Se você estiver usando o Node.js 18 ou posterior, o driver ignorará a opção cryptoCallbacks e usará callbacks definidos em C++ , melhorando significativamente o desempenho da criptografia. Esta alteração está disponível na v6.1.0 versão do pacote mongodb-client-encryption .

  • Para aumentar a segurança, as opções que especificam o caminho de geração e os argumentos para mongocryptd devem ser propriedades próprias de autoEncryption.extraOptions. Essa alteração ajuda a evitar bugs de poluição global de protótipos relacionados a essas opções. Para mais informações sobre propriedades próprias, consulte Object.hasOwn() no MDN.

  • Adiciona suporte oficial para queries de intervalo de Queryable Encryption (QE). Para usar esse recurso, seu aplicativo deve usar mongodb-client-encryption v6.1.0 ou posterior e deve se conectar ao MongoDB Server 8.0 ou posterior. Para obter mais informações sobre queries de intervalo de QE, consulte Queryable Encryption no manual do MongoDB Server .

  • Os métodos insertMany() e bulkWrite() aceitam entradas ReadonlyArray .

  • O driver tenta novamente gravações com base no código de nível superior, encontrado em error.code, em vez do código aninhado em error.result.writeConcernError.code. Isso corrige um problema em clusters fragmentados que executam versões MongoDB Server anteriores a 4.4.

  • A propriedade LocalKMSProviderConfiguration.key aceita uma instância BSON Binary para AutoEncryptionOptions.

  • No Typescript, a classe BulkOperationBase relata a propriedade de getter length.

  • O tipo MongoWriteConcernError agora preserva o código original de nível superior em MongoWriteConcernError.code.

  • O método cursor.toArray() vazia o lote atual de documentos na array antes de chamar o iterador assíncrono novamente. Esta alteração evita os atrasos associados à execução async/await e melhora o desempenho em até 5%, em média. Essa otimização não se aplica se você fornecer uma transformação para o método cursor.map() antes de chamar o método toArray() .

  • Corrige o uso misto do método cursor.next() com sintaxe for await .

  • Adiciona a opção enableUtf8Validation ao desserializar BSON, que foi removido inadvertidamente no driver do Node.js v6.8.

  • Adiciona a propriedade durationMS à classe ConnectionReadyEvent . Essa propriedade representa o tempo entre o evento de criação da conexão e quando o ConnectionReadyEvent é acionado.

Para saber mais sobre esta versão, consulte as Notas da versão v6.9.0 no GitHub.

A versão do driver Node.js v6.8 inclui os seguintes recursos:

  • Corrige um bug em que um provedor local de KMS aceitava uma instância BSON Binary no tempo de execução, mas o compilador Typescript permitia apenas valores do tipo Buffer e string.

  • O erro ReadConcernMajorityNotAvailableYet agora é um erro de leitura que pode ser repetido.

  • Agora você pode associar um nome e fornecer várias chaves para provedores de KMS. Este recurso requer mongodb-client-encryption v6.0.1 ou posterior. Você não pode usar provedores KMS nomeados se seu aplicação usar o recurso de atualização automática do provedor KMS.

    O seguinte exemplo de código mostra como configurar um objeto ClientEncryption com várias chaves Amazon Web Services :

    const clientEncryption = new ClientEncryption(keyVaultClient, {
    'aws:key1': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    'aws:key2': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    clientEncryption.createDataKey('aws:key-1', { ... });
  • Ao criar uma chave de dados KMIP, agora você pode especificar a opção delegated . Se essa opção estiver definida como true, o fornecedor de KMIP executará a criptografia e a descriptografia da chave de dados localmente, garantindo que a chave de criptografia nunca saia do servidor KMIP. Este recurso requer mongodb-client-encryption v6.0.1 ou posterior.

    O seguinte exemplo de código mostra como especificar esta opção:

    clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } );
  • O driver agora decodifica respostas BSON à medida que o cursor itera sobre elas, em vez de decodificar toda a resposta BSON quando ela é recebida.

  • A versão do Github para o pacote mongodb agora contém um arquivo de assinatura destacado, mongodb-X.Y.Z.tgz.sig, para o pacote npm . Essa alteração se aplica a todas as versões principais e de patch para as versões 5.x e 6.x do driver. Para verificar a assinatura do pacote , siga as instruções na seção Integridade da liberação do README.md no Github repositório do driver.

Para saber mais sobre esta versão, consulte as Notas da versão v6.8.0 no GitHub.

A versão do driver Node.js v6.7 inclui os seguintes recursos:

  • Adiciona suporte ao mecanismo de autenticação MONGODB-OIDC quando conectado ao MongoDB Server v7.0 e posterior. O driver oferece suporte à autenticação com autenticação de máquina do Azure, autenticação de máquina do GCP, autenticação de retorno de chamada e facetas de autenticação de retorno de chamada de interação humana.

  • Corrige um problema em que a definição do sinalizador useBigInt64 como true fazia com que a função interna compareTopologyVersion gerasse um erro.

Para saber mais sobre esta versão, consulte as Notas da versão v6.7.0 no GitHub.

A versão do driver Node.js v6.6 inclui os seguintes recursos:

  • Atualiza para usar BSON 6.7.0. Para obter detalhes sobre os novos recursos do BSON, consulte as notas da versão do BSON 6.5.0, BSON 6.6.0 e BSON 6.7.0.

  • Adiciona o método addStage() à API de aggregation fluída. Você pode usar esse método para adicionar estágios de pipeline de agregação individualmente, conforme mostrado no exemplo a seguir:

    const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray();
  • Adiciona os campos cause e dependencyName à classe MongoMissingDependencyError . Você pode usar esses campos para determinar programaticamente se um pacote está faltando ou por que um pacote não foi carregado.

  • Adiciona a propriedade minRoundTripTime à classe ServerDescription. Esta propriedade contém o tempo mínimo de ida e volta nos últimos 10 batimentos cardíacos.

  • Adiciona o método toJSON() à classe TopologyDescription. Embora você possa usar esse método para stringificar objetos TopologyDescription em JSON, recomendamos usar o método util.inspect() do nó, pois ele lida adequadamente com todos os tipos usados em JavaScript e no driver.

  • Adiciona suporte a opções de cursor para os métodos Collection.indexExists(), Collection.indexes() e Collection.indexInformation() no Typescript.

  • Remove o suporte das opções readConcern e writeConcern do método Collection.listSearchIndexes(). listSearchIndexes() é um método específico do Atlas e os índices de pesquisa do Atlas não oferecem suporte a essas opções.

  • Redefine a propriedade ServerDescription.roundTripTime como uma média móvel. Anteriormente, era uma média ponderada da duração da pulsação observada mais recentemente e da duração anterior.

  • É possível especificar o tipo de um índice de pesquisa ao criar o índice, conforme mostrado no exemplo a seguir:

    const indexName = await collection.createSearchIndex({
    name: 'my-vector-search-index',
    type: 'vectorSearch',
    definition: {
    mappings: { dynamic: false }
    }
    });
  • A propriedade UpdateFilter.$currentDate não lança mais um erro quando você a passa para um método composto, como findOneAndUpdate(), em uma coleção com um esquema limitado.

  • O driver lança um MongoTransactionError somente se você fornecer um ReadPreferenceMode diferente de primary e, em seguida, tentar executar um comando que envolve uma operação de leitura.

  • O tipo de dados da propriedade TopologyDescription.error é MongoError.

  • O método Collection.indexExists() não é mais compatível com a opção full.

  • Os métodos Collection.indexInformation(), Collection.indexes() e Db.indexInformation() têm um tipo de retorno de IndexDescriptionCompact | IndexDescriptionInfo[] no TypeScript.

  • Ao recuperar as credenciais do AWS KMS (Sistema de gerenciamento de chaves), o driver não gera mais um erro ao receber uma chave de acesso que inclui um carimbo de data e hora de expiração.

  • A interface ClusterTime não define mais o campo signature como obrigatório no TypeScript.

Para saber mais sobre essa versão, consulte a Destaques do lançamento v6.6.0 no GitHub.

A versão do driver Node.js v6.5 inclui os seguintes recursos:

  • Atualiza as operações de gravação em massa para usar a classe pkFactory para geração de ID de documento.

Aviso

Se você especificou anteriormente uma instância de pkFactory para lidar com gravações em massa, os campos _id dos documentos inseridos usando gravações em massa podem ser inconsistentes com o comportamento dessa versão.

  • Corrige a preferência de leitura enviada com operações de leitura para primaryPreferred quando o driver está conectado a um nó secundário no conjunto de réplicas.

  • Corrige um vazamento de memória na criação de promessa para operações de soquete.

  • Reduz a latência da conexão inicial ao se conectar a uma lista de sementes de DNS consultando os registros SRV e TXT em paralelo.

  • Adiciona rastreamento aos metadados do contêiner ao executar um cliente no Kubernetes ou em um ambiente de contêiner no campo client.env.container do documento de handshake.

  • Adiciona o documento de erro original retornado pelo servidor ao campo errorResponse do documento MongoServerError .

  • Descontinua a interface CloseOptions que não é usada pelo driver.

Para saber mais sobre essa versão, consulte a Destaques do lançamento v6.5.0 no GitHub.

A versão do driver Node.js v6.4 inclui os seguintes recursos:

  • Quando várias instâncias mongos estão disponíveis, servidores diferentes são usados para tentativas de repetição de leitura e gravação.

  • Armazena credenciais da AWS em cache no nível do cliente, em vez de para cada autenticação.

  • Atualiza para usar BSON 6.4.0. Para obter detalhes sobre os novos recursos do BSON, consulte as notas de versão do BSON 6.3.0 e BSON 6.4.0.

  • As operações de leitura que resultam em um erro ExceededTimeLimit são repetidas.

  • Corrige um problema de solicitação relacionado a soquetes TLS e provedores KMS.

  • Corrige o preenchimento básico64 no comando saslContinue para permitir a autenticação mongosh.

  • Digita countDocuments usando Filter<Schema> em vez de Document, o que permite o preenchimento automático e ajuda a evitar problemas de digitação posteriores.

  • Corrige um erro de tipo na opção $addToSet do comando bulkWrite . O driver ignora a validação de $addToSet quando você estende seus tipos de Document ou any ou usa propriedades de qualquer tipo.

  • Corrige a duração da pulsação do evento ServerHeartbeatSucceeded e ServerHeartbeatFailed para que não inclua o tempo para criar o soquete.

  • Emite erros de forma adequada dos fluxos de transformação do cursor, em vez de absorvê-los.

  • Torna os tokens de sessão da AWS opcionais quando um nome de usuário e uma senha são fornecidos. Permite também que o SDK do AWS lide com as solicitações de autenticação.

Para saber mais sobre essa versão, consulte a Destaques do lançamento v6.4.0 no GitHub.

A versão v6.3 do driver Node.js inclui as seguintes funcionalidades:

  • Adiciona a opção do cliente serverMonitoringMode para controlar o comportamento da conexão de monitoramento entre os nós em uma topologia. Esta opção obtém um valor de auto (padrão), poll ou stream. Para saber mais, consulte a entrada para esta opção no guia Opções de Conexão.

    Você pode configurar a opção serverMonitoringMode em uma instância do MongoClientOptions ou como uma opção de connection string. O exemplo a seguir mostra como criar um cliente com a opção definida como stream:

    new MongoClient('<connection string>', { serverMonitoringMode: 'stream' });
  • Corrige um vazamento de conexão quando a opção de cliente do serverApi está configurada.

  • Descontinua as opções contentType e aliases de GridFS. Para armazenar o tipo de conteúdo e os nomes alternativos de um arquivo, adicione os campos contentType e aliases ao documento metadata.

Para saber mais sobre esta versão, consulte Destaques da versão v6.3.0.

A versão v6.2 do driver do Node.js inclui as seguintes funcionalidades:

  • Atualiza a versão do pacote bson para 6.2.0 e inclui uma visualização em cores de tipos, conforme a imagem abaixo:

    A screenshot of the terminal that shows printing in color

    Para saber mais, consulte as Notas da versão do bson v6.2.0.

  • Garante que a propriedade result.insertedIds de um tipo de erro de gravação em massa contém os valores _id de documentos inseridos corretamente. Em versões anteriores, quando uma operação de gravação em massa rejeitava uma operação de inserção, a propriedade result.insertedIds continha os valores _id para todas as tentativas de inserção.

  • Fecha a sessão implícita criada ao executar o método findOne() em uma coleção de séries temporais, independentemente do resultado da operação.

  • Permite a criação de coleções com nomes que começam ou terminam com o caractere .. Esta alteração alinha o comportamento de verificação de nome do banco de dados e da collection do driver com o servidor.

Para saber mais sobre esta versão, consulte Destaques da versão v6.2.0.

A versão v6.1 do driver do Node.js inclui as seguintes funcionalidades:

  • Atualiza a versão do pacote bson para 6.1.0 para expor o método Decimal128.fromStringWithRounding(). Para saber mais, consulte as v6.1.0 Notas da versão do bson .

  • Detecta variáveis de ambiente para configurações de região quando você autentica usando a ação AssumeRoleWithWebIdentity do IAM com autenticação do MONGODB-AWS. Para instruir o driver a usar suas opções de região, você deve definir as duas variáveis de ambiente a seguir:

    • AWS_STS_REGIONAL_ENDPOINTS

    • AWS_REGION

    Para saber como definir as configurações de região ao usar o mecanismo de autenticação MONGODB-AWS, consulte a guia Web Identity Token na seção MONGODB-AWS do guia Mecanismos de autenticação.

  • Corrige um problema de vazamento de memória causado por chamadas recursivas para o método next() do tipo ChangeStream.

Para saber mais sobre esta versão, consulte Destaques da versão v6.1.0.

Aviso

Alterações significativas na v6.0

Esta versão do driver apresenta alterações interruptivas. Para obter uma lista dessas alterações, consulte a seção alterações interruptivas da versão 6.0 no guia de atualização.

A versão v6.0 do driver Node.js inclui as seguintes funcionalidades:

Importante

Aviso de depreciação

Todas as opções com o prefixo ssl no tipo MongoClientOptions estão obsoletas. A opção tlsCertificateFile também está obsoleta.

Em vez disso, você deve armazenar seus certificados em um objeto SecureContext ou definir as opções com prefixo tls na instância MongoClientOptions. Para saber mais, veja Como habilitar TLS em uma conexão.

  • Remoção de suporte para o comando auxiliar do addUser(). Em vez disso, use o comando createUser do MongoDB Shell.

  • Remoção do suporte para a operação collStats. Em vez disso, use o operador de agregação $collStats.

  • O campo options do tipo ConnectionPoolCreatedEvent contém apenas os seguintes campos, que são as opções de pool não padrão:

    • maxConnecting

    • maxPoolSize

    • minPoolSize

    • maxIdleTimeMS

    • waitQueueTimeoutMS

  • O driver lê de forma assíncrona os arquivos definidos nas opções de conexão tlsCAFile e tlsCertificateKeyFile quando você chama o método MongoClient.connect(), não quando cria uma instância MongoClient.

  • Remoção das opções de conexão keepAlive e keepAliveInitialDelay. O valor de keepAlive é definido permanentemente como true, e o valor de keepAliveInitialDelay é definido como 300.000 milissegundos (300 segundos).

    Para saber como definir as configurações de manutenção de atividade no nível do sistema, consulte O tempo de manutenção de atividade do TCP afeta implantações MongoDB? Item de perguntas frequentes no manual do servidor.

  • Remove as seguintes opções para o método Db.command():

    • willRetryWrite

    • omitReadPreference

    • writeConcern

    • explain

    • readConcern

    • collation

    • maxTimeMS

    • comment

    • retryWrites

    • dbName

    • authdb

    • noResponse

    Embora você não possa passar estas opções para o método Db.command(), você ainda pode defini-las no documento de comando. Para saber mais, consulte a seção Opções de comando do guia Executar um comando.

Para saber mais sobre esta versão, consulte Destaques da versão v6.0.0.