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:
Novidades no 5.6
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.
5.5: quais as novidades
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.
5.4: quais as novidades
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 doTChange
específico do esquema em vez da interface doDocument
.
Para saber mais, consulte os destaques da versão v5.4.0.
O que há de novo em 5.3
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 sintaxefor await...of
, como mostrado aqui.O método
addUser()
está obsoleto. Em vez disso, usecreateUser()
.As opções de conexão
keepAlive
ekeepAliveInitialDelay
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.
Novidades no 5.2
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.
Novidades no 5.1
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
paraBSON.Long
. Ele também suporta a desserialização de valores doBSON.Long
retornados do servidor para valores dobigint
quando o sinalizadoruseBigInt64
é passado como verdadeiro.
Para saber mais, consulte os destaques da versão v5.1.0.
Novidades no 5.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()
eCollection.remove()
. A lista a seguir fornece instruções sobre como substituir a funcionalidade dos métodos removidos:Migrar de
Collection.insert()
parainsertOne()
ouinsertMany()
Migrar de
Collection.update()
paraupdateOne()
ouupdateMany()
Migrar de
Collection.remove()
paradeleteOne()
oudeleteMany()
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.
O que há de novo em 4.17
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.
Novidades no 4.16
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.
4.15: quais as novidades
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.
O que há de novo em 4.14
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.
4.13: quais as novidades
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
eavailable
.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.
4.12: quais as novidades
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 doChangeStream
em qualquer contexto que espere umAsyncIterator
.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.
Novidades no 4.11
Ordem de priorização no monitoramento
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.
Alterações na autenticação AWS
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.
Verificação do tipo de esquema mutuamente recursivo
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.
Exemplo
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.
Novidades no 4.10
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.
Novidades no 4.9
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.
4.8: quais as novidades
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 MongoDBestimatedDocumentCount()
método agora pode aceitar um comentário
Para saber mais, consulte v4.8.0 Destaques da versão.
O que há de novo em 4.7
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 MongoDBCapacidade 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
.
4.6: quais as novidades
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.
Novidades no 4.5
Consulte Destaques da versão v4.5.0 no GitHub.
O que há de novo em 4.4
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 comocollection.countDocuments()
. Nesta versão, o métodocollection.count()
foi atualizado para corresponder ao comportamento legado:Se uma query for fornecida,
collection.count()
se comportará da mesma forma quecollection.countDocuments()
e executará uma verificação de collection.Se nenhuma query for fornecida,
collection.count()
se comportará da mesma forma quecollection.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 comcollection.count()
. Use os métodoscollection.estimatedDocumentCount()
oucollection.countDocuments()
.
Novidades no 4.3
As novas funcionalidades da versão 4.3 do driver Node.js incluem:
Suporte a SOCKS5
Opção para desativar a validação UTF-8
Tipo de inferência para documentos aninhados
4.2: quais as novidades
As novas funcionalidades da versão do driver do 4.2 Node.js incluem:
srvMaxHosts
esrvServiceName
opções de conexão de lista de sementes DNS
Novidades no 4.1
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 oClientSession
deve atualizar seu tempo de cluster.
4.0: quais as novidades
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:
TypeScript
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.
Principais alterações
Versão do Node.js
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.
Melhorias no cursor
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 paraChangeStream
)ListCollectionsCursor
API Cursor Stream
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.
MongoClientOptions
Interface
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 eramfalse
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
ouuseNewUrlParser
.
createCollection()
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
→ MongoBulkWriteError
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
DB
não é mais um EventEmitter
. Ouça eventos diretamente da sua instância do MongoClient
.
Collection.group()
O auxiliar do Collection.group()
, obsoleto desde o MongoDB 3.4, foi removido. Utilize o operador do pipeline de agregação $group.
Autenticação
gssapiServiceName
foi removido. Use authMechanismProperties.SERVICE_NAME no URI ou como uma opção noMongoClientOptions
.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: "<>" } })
GridStore
Remoção
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.
Construção
Exemplo
// old way const gs = new GridStore(db, filename, mode[, options]) // new way const bucket = new GridFSBucket(client.db('test')[,options])
Busca de arquivos
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 })
Transferir e baixar arquivos
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
.
Exclusão de arquivos
Exemplo
// old way GridStore.unlink(db, name, callback); // new way bucket.delete(file_id);
Encontrando metadados de arquivo
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();
Topologia unificada
Agora gerenciamos internamente apenas uma
unifiedTopology
quando você se conecta a ummongod
. As diferenças entre esta versão e as anteriores são detalhadas aqui.Não é mais necessário especificar
useUnifiedTopology
ouuseNewUrlParser
.Você deve usar a nova opção
directConnection
para se conectar a nós do conjunto de réplicas não inicializados.
explicar
Agora foi adicionado suporte para modos de verbosidade refinados. Você pode saber mais sobre cada modo aqui.
Monitoramento de comandos
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.
Lista detalhada
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.
Novidades no 3.7
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
O que há de novo em 3.6
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 RAMOs 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