Descubra as novidades de cada versão:
Novidades no 6.9
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
eChangeStream
. Ao usar uma versão compatível do Node.js , você pode implementar o gerenciamento explícito de recursos usando o métodocursor.stream()
e a classeGridFSDownloadStream
.Para saber como usar o gerenciamento explícito de recursos, consulte as notas de versão 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 ECMAScript no GitHub.
Se você estiver usando o Node.js 18.13 ou posterior, poderá passar as opções
autoSelectFamily
eautoSelectFamilyTimeout
para o construtorMongoClient
. Quando a opçãoautoSelectFamily
étrue
, o driver seleciona automaticamente entre uma conexão IPv4 ou IPv6 . A opçãoautoSelectFamilyTimeout
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çãoallowPartialTrustChain
. Esta opção controla o sinalizadorX509_V_FLAG_PARTIAL_CHAIN
OpenSSL.O
ConnectionCheckedOutEvent
e oConnectionCheckFailedEvent
agora incluem uma propriedadedurationMS
. 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 pacotemongodb-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ópriasautoEncryption.extraOptions
de. Essa alteração ajuda a evitar bugs de poluição global de protótipos relacionados a essas opções. Para obter 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()
ebulkWrite()
aceitam entradasReadonlyArray
.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 emerror.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ânciaBSON
Binary
paraAutoEncryptionOptions
.No Typescript, a classe
BulkOperationBase
relata a propriedade de getterlength
.O tipo
MongoWriteConcernError
agora preserva o código original de nível superior emMongoWriteConcernError.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çãoasync
/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étodocursor.map()
antes de chamar o métodotoArray()
.Corrige o uso misto do método
cursor.next()
com sintaxefor await
.Adiciona a opção
enableUtf8Validation
ao desserializar BSON, que foi removido inadvertidamente no driver do Node.js v6.8.Adiciona a propriedade
durationMS
à classeConnectionReadyEvent
. Essa propriedade representa o tempo entre o evento de criação da conexão e quando oConnectionReadyEvent
é acionado.
Para saber mais sobre esta versão, consulte as Notas da versão v6.9.0 no GitHub.
Novidades no 6.8
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 tipoBuffer
estring
.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 comotrue
, 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 requermongodb-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
mongodb
pacote agora contém um arquivo de assinaturamongodb-X.Y.Z.tgz.sig
destacado,, para o pacote NPM. Essa alteração se aplica a todas as versões principais e de patch para as 5 versões.x 6 e.x do driver. Para verificar a assinatura do pacote , siga as instruções na seção Integridade da versão do arquivo README.md no repositório GitHub do driver.
Para saber mais sobre esta versão, consulte as Notas da versão v6.8.0 no GitHub.
Novidades no 6.7
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
comotrue
fazia com que a função internacompareTopologyVersion
gerasse um erro.
Para saber mais sobre esta versão, consulte as Notas da versão v6.7.0 no GitHub.
Novidades no 6.6
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
edependencyName
à classeMongoMissingDependencyError
. 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
à classeServerDescription
. Esta propriedade contém o tempo mínimo de ida e volta nos últimos 10 batimentos cardíacos.Adiciona o método
toJSON()
à classeTopologyDescription
. Embora você possa usar esse método para stringificar objetosTopologyDescription
em JSON, recomendamos usar o métodoutil.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()
eCollection.indexInformation()
no Typescript.Remove o suporte das opções
readConcern
ewriteConcern
do métodoCollection.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, comofindOneAndUpdate()
, em uma coleção com um esquema limitado.O driver lança um
MongoTransactionError
somente se você fornecer umReadPreferenceMode
diferente deprimary
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çãofull
.Os métodos
Collection.indexInformation()
,Collection.indexes()
eDb.indexInformation()
têm um tipo de retorno deIndexDescriptionCompact | 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 camposignature
como obrigatório no TypeScript.
Para saber mais sobre essa versão, consulte a Destaques do lançamento v6.6.0 no GitHub.
Novidades no 6.5
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
eTXT
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 documentoMongoServerError
.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.
Novidades no 6.4
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 BSON, consulte as notas de versão para BSON 6.3.0 e BSON...640
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
usandoFilter<Schema>
em vez deDocument
, 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 comandobulkWrite
. O driver ignora a validação de$addToSet
quando você estende seus tipos deDocument
ouany
ou usa propriedades de qualquer tipo.Corrige a duração da pulsação do evento
ServerHeartbeatSucceeded
eServerHeartbeatFailed
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.
6.3: quais as novidades
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 deauto
(padrão),poll
oustream
. 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 doMongoClientOptions
ou como uma opção de connection string. O exemplo a seguir mostra como criar um cliente com a opção definida comostream
: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
ealiases
de GridFS. Para armazenar o tipo de conteúdo e os nomes alternativos de um arquivo, adicione os camposcontentType
ealiases
ao documentometadata
.
Para saber mais sobre esta versão, consulte Destaques da versão v6.3.0.
Novidades no 6.2
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: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 propriedaderesult.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.
Novidades no 6.1
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étodoDecimal128.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
MONGODB-AWS
autenticação do. 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 de mecanismos de autenticação.Corrige um problema de vazamento de memória causado por chamadas recursivas para o método
next()
do tipoChangeStream
.
Para saber mais sobre esta versão, consulte Destaques da versão v6.1.0.
6.0: quais as novidades
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 tipoConnectionPoolCreatedEvent
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
etlsCertificateKeyFile
quando você chama o métodoMongoClient.connect()
, não quando cria uma instânciaMongoClient
.Remoção das opções de conexão
keepAlive
ekeepAliveInitialDelay
. O valor dekeepAlive
é definido permanentemente comotrue
, e o valor dekeepAliveInitialDelay
é 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.