Menu Docs
Página inicial do Docs
/ / /
Node.js

NOVIDADES

Nesta página

  • Novidades no 5.6
  • 5.5: quais as novidades
  • 5.4: quais as novidades
  • O que há de novo em 5.3
  • Novidades no 5.2
  • Novidades no 5.1
  • Novidades no 5.0
  • O que há de novo em 4.17
  • Novidades no 4.16
  • 4.15: quais as novidades
  • O que há de novo em 4.14
  • 4.13: quais as novidades
  • 4.12: quais as novidades
  • Novidades no 4.11
  • Novidades no 4.10
  • Novidades no 4.9
  • 4.8: quais as novidades
  • O que há de novo em 4.7
  • 4.6: quais as novidades
  • 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
  • Novidades no 3.7
  • O que há de novo em 3.6

Descubra as novidades de cada versão:

A versão v5.6 do driver Node.js inclui as seguintes funcionalidades:

  • O driver agora suporta o Node.js v20.

  • O driver pode retornar um cursor como resposta a um comando de servidor quando você chama o método runCursorCommand() . Para saber mais sobre esse recurso, consulte a Documentação da API runCursorCommand.

  • Suporte para especificar opções de criação da coleção de séries temporais bucketMaxSpanSeconds e bucketRoundingSeconds. Para saber mais sobre essas opções de coleção de séries temporais, consulte Como definir granularidade para dados de séries temporais no manual do servidor.

Para saber mais sobre esta versão, consulte Destaques da versão v5.6.0.

As novas funcionalidades da versão do driver do 5.5 Node.js incluem:

  • O driver agora detecta com precisão ambientes de Função como Serviço (FaaS) na AWS, considerando as variáveis de ambiente da AWS somente se elas começarem com AWS_Lambda_.

  • Você deve atualizar o mongodb-client-encryption para a versão 2.8.0 ou posterior para criar uma collection criptografada usando a funcionalidade Queryable Encryption.

As novas funcionalidades da versão do driver do 5.4 Node.js incluem:

Importante

Aviso de depreciação

  • A operação collStats está obsoleta. Em vez disso, use o operador de agregação $collStats.

  • A interface TypeScript passada para o método db.command() inclui incorretamente determinadas opções. Essas opções foram descontinuadas.

  • O método ChangeStream.tryNext agora utiliza o tipo genérico do TChange específico do esquema em vez da interface do Document.

Para saber mais, consulte os destaques da versão v5.4.0.

As novas funcionalidades da versão do driver do 5.3 Node.js incluem:

Importante

Aviso de depreciação

  • O método do cursor do forEach() , que permite acessar iterativamente os resultados de queries e aggregations, está obsoleto. Use a sintaxe for await...of , como mostrado aqui.

  • O método addUser() está obsoleto. Em vez disso, use createUser().

  • As opções de conexão keepAlive e keepAliveInitialDelay estão obsoletas.

  • Métodos que contêm funcionalidade duplicada na classe BulkWriteResult tornam-se obsoletos. Consulte a documentação da API para obter uma lista completa de métodos obsoletos e as alternativas preferidas.

  • Os metadados do cliente agora incluem informações sobre o ambiente de função como serviço (FaaS) e detecção de tempo de execução alternativo.

  • O driver permite agora endereços de registo SRV que contêm um ponto à direita.

  • UpdateResult.upsertedId agora retorna nulo quando nenhum documento é atualizado.

Para saber mais, consulte os destaques da versão v5.3.0.

As novas funcionalidades da versão 5.2 do driver Node.js incluem:

  • O driver agora oferece suporte à obtenção automática de credenciais do Azure ao usar a Queryable Encryption automática.

Para saber mais, consulte os destaques da versão v5.2.0.

As novas funcionalidades da versão do driver do 5.1 Node.js incluem:

  • O driver agora suporta serialização automática do JavaScript bigint para BSON.Long. Ele também suporta a desserialização de valores do BSON.Long retornados do servidor para valores do bigint quando o sinalizador useBigInt64 é passado como verdadeiro.

Para saber mais, consulte os destaques da versão v5.1.0.

Importante

Alterações significativas na v5.0

  • A versão 5.0 do driver Node.js não é compatível com Node.js v12 ou anterior. Se quiser utilizar esta versão do driver, você deve utilizar o Node.js v14.20.1 ou superior.

  • Esta versão remove o suporte para chamadas de resposta para oferecer uma API baseada em promessa. A lista a seguir fornece algumas estratégias para os usuários de chamadas de resposta adotarem esta versão:

    • Migrar para a API baseada em promessa (recomendado)

    • Use a API baseada em promessa e util.callbackify

    • Adicione mongodb-legacy para continuar usando chamadas de resposta

    Para obter mais informações sobre essas estratégias, consulte Alterações no MongoDB Node.js Driver v5.

  • Esta versão remove o suporte para os métodos auxiliares de Collection.insert(), Collection.update() e Collection.remove() . A lista a seguir fornece instruções sobre como substituir a funcionalidade dos métodos removidos:

    • Migrar de Collection.insert() para insertOne() ou insertMany()

    • Migrar de Collection.update() para updateOne() ou updateMany()

    • Migrar de Collection.remove() para deleteOne() ou deleteMany()

Para ver uma lista completa da alteração interruptiva introduzidas nesta versão, consulte a seção de alteração interruptiva no guia de atualização.

As novas funcionalidades da versão 5.0 do driver Node.js incluem:

  • Por padrão, o driver não verifica mais os tipos referenciados em notação de ponto, a menos que a anotação de tipo StrictFilter seja explicitamente usada. Para saber mais sobre essa mudança, consulte a página de fundamentos do Typescript.

    Observação

    Esta alteração é apenas para Typescript e não afeta queries ou operações no tempo de execução.

  • Instalação opcional do @aws-sdk/credential-providers como uma dependência de emparelhamento.

    • O driver já não inclui módulos do AWS SDK por padrão. Use o seguinte comando npm para instalar o SDK:

      npm install --save "@aws-sdk/credential-providers@^3.201.0"

      Se instalar o SDK, o npm notificará você se a versão do SDK que instalou for incompatível com o driver. Depois de instalar a dependência corretamente, o driver usa o próprio AWS SDK para gerenciar credenciais do ambiente.

As novas funcionalidades da versão do driver Node.js 4.17 incluem:

  • Adiciona o pacote mongodb-js/saslprep como dependência do driver.

  • Melhora a compatibilidade com a funcionalidade Queryable Encryption.

Para saber mais, consulte os destaques da versão v4.17.0.

As novas funcionalidades da versão do driver Node.js 4.16 incluem:

  • Inclui informações da plataforma Function-as-a-Service (FaaS) nos metadados do handshake do driver.

  • Identifica o uso de tempo de execução do Deno nos metadados do cliente.

Para saber mais, consulte os destaques da versão v4.16.0.

As novas funcionalidades da versão do driver Node.js 4.15 incluem:

  • Suporte para roles do AWS IAM para contas de serviço.

Para saber mais, consulte os destaques da versão v4.15.0.

Importante

Atualize da v4.13 para a v4.14

Esta versão inclui uma correção para um vazamento de memória introduzido na v4.13. Recomendamos atualizar para a v4.14.

As novas funcionalidades da versão do driver do 4.14 Node.js incluem:

  • Corrigido um vazamento de memória introduzido na v4.13.

  • Métodos e opções obsoletos que referenciam o Logger legado.

As novas funcionalidades da versão do driver do 4.13 Node.js incluem:

  • Cancelamento automático de operações a bordo no pool de conexões quando o driver encontra erros de tempo limite de rede.

  • Desativou a consistência causal em sessões implícitas para evitar conflitos com as configurações de read concern linearizable e available.

  • Corrigido um possível vazamento de memória, garantindo que o driver destrua instâncias de MessageStream sempre que suas conexões forem destruídas.

Importante

Atualize o driver para a versão 4.12.1

O driver do Node.js 4.12.1 inclui uma correção para uma regressão na lógica de monitoramento que pode causar falhas nos processos.

As novas funcionalidades da versão do driver do 4.12 Node.js incluem:

  • Redefinição da classe ChangeStream como uma iteração assíncrona. Você pode usar instâncias do ChangeStream em qualquer contexto que espere um AsyncIterator.

    • Em especial, os change streams agora podem ser usados em loops do Javascript for-await:

      const changeStream = myColl.watch();
      for await (const change of changeStream) {
      console.log("Received change: ", change);
      }
  • Correção no monitoramento do servidor quando o driver ignora eventos de monitoramento. Nesta versão, o driver sempre atualiza sua exibição da topologia ao processar eventos de monitoramento.

  • Melhorias no desempenho com o armazenamento em buffer como resultado da modificação das estruturas de dados usadas internamente no driver.

Para saber mais, consulte os destaques da versão v4.12.0.

Ao se conectar ao servidor MongoDB versão 6.0 ou posterior, o driver prioriza as configurações electionId antes das configurações setVersion durante os eventos de descoberta e monitoramento do servidor. Em versões anteriores, a ordem de priorização estava revertida.

Ao instalar a dependência opcional aws-sdk/credential-providers, o driver usará o AWS SDK para recuperar credenciais da AWS do ambiente.

Para saber mais sobre esse comportamento, consulte a seção MONGODB-AWS do guia de mecanismos de autenticação.

Esta versão inclui suporte adicional para tipos de esquema de collection mutuamente recursivos . O driver também fornece segurança de tipo para queries de notação de ponto até uma profundidade de oito nesta versão. Em uma profundidade maior ou igual a oito, o Typescript compila com êxito seu código, mas não fornece segurança de tipo. Esse limite de profundidade nos tipos recursivos é uma limitação atual do TypeScript.

Suponha que temos uma collection do tipo Collection<Author> que contém os seguintes tipos mutuamente recursivos:

interface Author {
name: string;
bestBook: Book;
}
interface Book {
title: string;
author: Author;
}

O TypeScript força a verificação de tipos até uma profundidade de oito. O seguinte código causa um erro de compilação TypeScript porque o valor de propriedade name deve ser um tipo string:

myColl.findOne({ 'bestBook.author.bestBook.title': 25 });

Em uma profundidade maior ou igual a oito, o TypeScript compila seu código, mas nenhum tipo mais longo o verifica. Por exemplo, o código a seguir atribui um number a uma propriedade string, mas não causa um erro de compilação porque a propriedade referenciada está em uma profundidade de 10:

myColl.findOne({
'bestBook.author.bestBook.author.bestBook.author.bestBook.author.bestBook.author.name': 25
});

Para saber mais, consulte os destaques da versão v4.11.0.

As novas funcionalidades da versão do driver do 4.10 Node.js incluem:

  • Descontinuação da chamada de resposta

    • Chamadas de resposta agora estão obsoletas em favor de Promises. As chamadas de resposta serão removidas no próximo lançamento principal. A equipe de drivers do Node recomenda migrar para Promises sempre que possível:

      • Use a sintaxe async/await.

      • Use o utilitário callbackify do Node.js:

        require('util').callbackify(() => myColl.findOne())(callback)
      • Use a sintaxe em seguida:

        myColl.findOne().then(res => callback(null, res), err => callback(err))
    • Se não for possível migrar para o Promises em uma base de código grande, você pode usar o driver do Node.js legado com suporte opcional de chamada de resposta.

Para saber mais, consulte v4.10.0 Destaques da versão.

As novas funcionalidades da versão 4.9 do driver Node.js incluem:

  • Correção de uma inconsistência com as opções writeConcern nas definições de tipo.

  • Incluída a versão mais recente do BSON, que adiciona suporte automático a UUID. Consulte as notas de versão do BSON aqui.

Para saber mais, consulte v4.9.0 Destaques da versão.

Importante

Atualização da v4.8.0 para a v4.8.1

A versão 4.8.1 corrige um problema de regressão de tipo introduzido na v4.8.0. Ao atualizar para v4.8.1, você poderá especificar valores e subdocumentos do _id ao executar atualizações com os operadores do $set ou $setOnInsert.

As novas funcionalidades da versão 4.8 do driver Node.js incluem:

  • Adicionado preenchimento automático e segurança de tipo para chaves aninhadas em um filtro de atualização

  • client.startSession() agora pode ser chamado antes de se conectar ao MongoDB

  • estimatedDocumentCount() método agora pode aceitar um comentário

Para saber mais, consulte v4.8.0 Destaques da versão.

As novas funcionalidades da versão 4.7 do driver Node.js incluem:

  • O método MongoClient.connect() agora é opcional ao conectar-se à sua instância do MongoDB

  • Capacidade de comprimir mensagens com o algoritmo de compressão Zstandard

  • Suporte para a opção de conexão maxConnecting

  • Capacidade dos documentos de change stream mostrarem seus documentos antes e depois de uma atualização

  • Adicionado suporte para novos campos de change streams relacionados à replicação de cluster para cluster

  • O método estimatedDocumentCount() agora utiliza o comando de banco de dados $count

  • Aprimoramento da conexão com o MongoDB na fase de AWS Lambda Init

Importante

Aviso de depreciação

A interface ResumeOptions está obsoleta. Em vez dela, use a interface ChangeStreamCursorOptions.

As novas funcionalidades da versão do driver Node.js 4.6 incluem:

  • Melhorou o ChangeStreamDocument no TypeScript.

  • Distribuição uniforme da seleção de servidores com base na carga entre servidores.

Para saber mais, consulte v4.6.0 Destaques da versão.

Consulte Destaques da versão v4.5.0 no GitHub.

As novas funcionalidades da versão do driver do 4.4 Node.js incluem:

  • Suporte do provedor KMIP ao usar CSFLE.

  • Suporte a TLS durante o uso de CSFLE.

  • A canonicalização de nome de host agora aceita "none", "forward" e "forwardAndReverse" como authMechanismProperties ao utilizar GSSAPI.

  • Na versão 4.0.0 do driver, o método collection.count() obsoleto foi alterado inadvertidamente para se comportar como collection.countDocuments(). Nesta versão, o método collection.count() foi atualizado para corresponder ao comportamento legado:

    • Se uma query for fornecida, collection.count() se comportará da mesma forma que collection.countDocuments() e executará uma verificação de collection.

    • Se nenhuma query for fornecida, collection.count() se comportará da mesma forma que collection.estimatedDocumentCount() e dependerá dos metadados da collection.

    Importante

    Aviso de depreciação

    O método cursor.count() está obsoleto e será removido na próxima versão principal, junto com collection.count(). Use os métodos collection.estimatedDocumentCount() ou collection.countDocuments().

As novas funcionalidades da versão 4.3 do driver Node.js incluem:

As novas funcionalidades da versão do driver do 4.2 Node.js incluem:

As novas funcionalidades da versão do driver do 4.1 Node.js incluem:

  • Adicionado suporte de conexão balanceada de carga para todos os tipos de cluster, incluindo a plataforma sem servidor beta.

  • Suporte adicionado para o método advanceClusterTime() para determinar se o ClientSession deve atualizar seu tempo de cluster.

Importante

Nesta versão do driver, o método collection.count() obsoleto foi alterado inadvertidamente para se comportar como collection.countDocuments(). Esse comportamento é corrigido na versão 4.4.

As novas funcionalidades da versão do driver do 4.0 Node.js incluem:

  • Migramos o driver para o TypeScript. Agora você pode aproveitar o tipo recursos de sugestão e intellisense em editores que oferecem suporte ao seu desenvolvimento seus aplicativos MongoDB. Aproveite os benefícios deste trabalho também em projetos JavaScript puros.

  • A biblioteca BSON subjacente usada por esta versão foi migrada para o TypeScript.

  • A documentação integrada agora está consistentemente formatada para melhorar a exibição nos editores.

  • Se você for usuário de tipos de comunidades @types/mongodb, provavelmente surgirá problemas ao adotar os tipos da nossa base de código. Não foi possível obter uma correspondência de um para um em tipos devido aos detalhes de escrever a base de código no TypeScript.

Gostaríamos muito de ouvir suas solicitações de recursos relacionadas ao TypeScript. Envie ideias em nosso projeto JIRA aqui.

A versão mínima suportada do Node.js agora é v12.9 ou superior para a versão 4 do driver. O suporte para nossas ramificações 3.x continuará até o verão de 2022 para dar tempo de atualização.

Observação

3.x oferece suporte a partir do Node.js v4.

Nossa implementação do Cursor foi atualizada para deixar claro o que é possível fazer antes e depois da execução de uma operação.

Exemplo

const fc = myColl.find({a: 2.3}).skip(1)
for await (const doc of fc) {
console.log(doc)
fc.limit(1) // incorrect usage, cursor already executing
}

Havia uma inconsistência da qual o cursor cometia um erro se uma configuração fosse aplicada após o início da execução do cursor. Agora, o cursor lançará um erro ao tentar aplicar operações em um estado inválido, semelhante ao seguinte:

MongoError: Cursor is already initialized

  • Classes afetadas:

    • AbstractCursor

    • FindCursor

    • AggregationCursor

    • ChangeStreamCursor (Esse é o cursor subjacente para ChangeStream)

    • ListCollectionsCursor

Nossos tipos de cursor não estendem mais Readable diretamente. Eles devem ser transformados em um stream ao chamar cursor.stream().

Exemplo

const cursor = myColl.find({});
const stream = cursor.stream();
stream.on("data", data => console.log);
stream.on("error", () => client.close());

Use hasNext() e next() para iteração manual. Use a sintaxe for await of ou quaisquer auxiliares Promise para iteração assíncrona.

Com a indicação de tipo, você perceberá que as opções passadas para um MongoClient estão enumeradas e são detectáveis. Fizemos um grande esforço para processar todas as opções no driver e emitir avisos antecipados sobre configurações incompatíveis para que seu aplicativo seja instalado e executado em um estado correto com rapidez.

  • checkServerIdentity não é mais verificado antes de ser transmitido para a API Node subjacente. Anteriormente, os valores aceitos eram false ou uma função. Agora, o argumento deve ser uma função. Especificar um booleano resultará na geração de um erro.

  • Não é mais necessário especificar useUnifiedTopology ou useNewUrlParser.

Esse método não oferece mais suporte à opção strict, que gerava um erro se a collection não existisse. Para afirmar a existência de uma collection, use o método listCollections().

Exemplo

const collections = (await db.listCollections({}, { nameOnly: true })
.toArray()).map(
({name}) => name
);
if (!collections.includes(myNewCollectionName)) {
throw new Error(`${myNewCollectionName} doesn't exist`);
}

BulkWriteError agora foi renomeado para MongoBulkWriteError.

Ao executar operações em massa que fazem escritas, você pode encontrar erros dependendo de suas configurações. Importe o novo nome da classe MongoBulkWriteError ao testar erros em operações em massa.

DB não é mais um EventEmitter. Ouça eventos diretamente da sua instância do MongoClient.

O auxiliar do Collection.group() , obsoleto desde o MongoDB 3.4, foi removido. Utilize o operador do pipeline de agregação $group.

  • gssapiServiceName foi removido. Use authMechanismProperties.SERVICE_NAME no URI ou como uma opção no MongoClientOptions.

    Exemplo

    ?authMechanismProperties.SERVICE_NAME
    // or
    new MongoClient(url, { SERVICE_NAME: "alternateServiceName" })
  • A especificação opcional de nome de usuário e senha só é possível no URI ou como uma opção no MongoClientOptions.

    Exemplo

    new MongoClient("mongodb://username:password@<host><port>")
    // or
    new MongoClient(url, { auth: { username: "<>", password: "<>" } })

A API do GridStore (já obsoleta na 3.x) agora foi substituída por GridFSBucket. Para obter mais informações sobre GridFS, consulte o Manual do MongoDB.

Abaixo estão alguns trechos que representam operações equivalentes.

Exemplo

// old way
const gs = new GridStore(db, filename, mode[, options])
// new way
const bucket = new GridFSBucket(client.db('test')[,options])

GridFSBucket usa a API do Stream Node.js. Você pode replicar a procura de arquivos pelas opções start e end, criando um fluxo de transferências a partir do GridFSBucket.

Exemplo

bucket.openDownloadStreamByName(filename, { start: 0, end: 100 })

Exemplo

await client.connect();
const filename = 'test.txt'; // whatever local file name you want
const db = client.db();
const bucket = new GridFSBucket(db);
fs.createReadStream(filename)
.pipe(bucket.openUploadStream(filename))
.on('error', console.error)
.on('finish', () => {
console.log('done writing to db!');
bucket
.find()
.toArray()
.then(files => {
console.log(files);
bucket
.openDownloadStreamByName(filename)
.pipe(fs.createWriteStream('downloaded_' + filename))
.on('error', console.error)
.on('finish', () => {
console.log('done downloading!');
client.close();
});
});
});

Observação

GridFSBucket não precisa ser fechado como GridStore.

Exemplo

// old way
GridStore.unlink(db, name, callback);
// new way
bucket.delete(file_id);

Os metadados de arquivos que costumavam ser acessíveis na instância do GridStore podem ser encontrados fazendo query no bucket.

Exemplo

const fileMetaDataList: GridFSFile[] = bucket.find({}).toArray();
  • Agora gerenciamos internamente apenas uma unifiedTopology quando você se conecta a um mongod. As diferenças entre esta versão e as anteriores são detalhadas aqui.

  • Não é mais necessário especificar useUnifiedTopology ou useNewUrlParser.

  • Você deve usar a nova opção directConnection para se conectar a nós do conjunto de réplicas não inicializados.

Agora foi adicionado suporte para modos de verbosidade refinados. Você pode saber mais sobre cada modo aqui.

O método instrument() foi removido. Use o monitoramento de comandos em seu lugar. Consulte nosso guia sobre monitoramento de comandos para obter mais informações.

Para ver uma lista completa da alteração interruptiva introduzidas nesta versão, consulte a seção de alteração interruptiva no guia de atualização.

As novas funcionalidades da versão 3.7 do driver Node.js incluem:

  • Suporte adicionado para o modo balanceador de carga ao habilitar a opção useUnifiedTopology

  • Suporte adicionado para API estável e a habilitação da opção useUnifiedTopology

As novas funcionalidades da versão do driver do 3.6 Node.js incluem:

  • Foi adicionado suporte ao mecanismo de autenticação MONGODB-AWS usando as credenciais do Amazon Web Services (AWS) Identity e Access Management (IAM)

  • O método find() suporta allowDiskUse() para classificações que exigem muita memória para serem executadas na RAM

  • Os métodos update() e replaceOne() são compatíveis com dicas de índices

  • Redução no tempo de recuperação para alterações de topologia e eventos de failover

  • Melhorias no teste de validação para o writeConcern padrão

  • A autenticação exige menos viagens de ida e volta para o servidor, resultando em uma configuração de conexão mais rápida

  • Conversas mais curtas do Salted Challenge Response Authentication Mechanism (SCRAM)

  • Capacidade de criar collections e índices para múltiplas transações de documentos

  • Executando validação para uma collection em segundo plano

Voltar

Referência rápida