Menu Docs
Página inicial do Docs
/ / /
Driver GO

NOVIDADES

Nesta página

  • Novidades no 2.0
  • Novidades no 1.17
  • Novidades no 1.16
  • Novidades em 1.15.1
  • Novidades no 1.15
  • Novidades no 1.14
  • Novidades no 1.13
  • Novidades em 1.12.1
  • Novidades no 1.12

Dica

Notas de versão

Para saber mais sobre alterações e atualizações entre versões, você pode ler as notas de versão publicadas com o código-fonte do driver.

Descubra as novidades de cada versão:

A versão do driver Go 2.0 oferece suporte à autenticação OpenID Connect (OIDC), fornece uma experiência de tempo limite de operações (CSOT) mais tranquila do lado do cliente e implementa um código Go mais claro e idiomático ao simplificar APIs, melhorar as descrições de erros e simplificar a estrutura do pacote do driver .

Você pode saber mais sobre essas alterações nesta seção ou visualizando o Guia de2.0 migração v no código-fonte do driver Go no GitHub.

Importante

Mudanças de última hora

A versão Go driver v2.0 introduz as seguintes alterações significativas:

  • mongo.Connect() não aceita um parâmetro de contexto. Este método aceita apenas um objeto de opções. Para visualizar um exemplo que utiliza este método, consulte o Código de Exemplo de Conexão do no Guia de Conexão.

  • O método Cursor.SetMaxTime() é renomeado para Cursor.SetMaxAwaitTime(). Este método especifica o tempo máximo que o servidor aguarda novos documentos recuperados de uma collection limitada com um cursor persistente.

  • Remoção de opções de tempo limite específicas da operação. Os seguintes campos e métodos de configuração foram removidos do driver:

    • AggregateOptions.MaxTime, AggregateOptions.SetMaxTime()

    • ClientOptions.SocketTimeout, ClientOptions.SetSocketTimeout()

    • CountOptions.MaxTime, CountOptions.SetMaxTime()

    • DistinctOptions.MaxTime, DistinctOptions.SetMaxTime()

    • EstimatedDocumentCountOptions.MaxTime, EstimatedDocumentCountOptions.SetMaxTime()

    • FindOptions.MaxTime, FindOptions.SetMaxTime()

    • FindOneOptions.MaxTime, FindOneOptions.SetMaxTime()

    • FindOneAndReplaceOptions.MaxTime, FindOneAndReplaceOptions.SetMaxTime()

    • FindOneAndUpdateOptions.MaxTime, FindOneAndUpdateOptions.SetMaxTime()

    • GridFSFindOptions.MaxTime, GridFSFindOptions.SetMaxTime()

    • CreateIndexesOptions.MaxTime, CreateIndexesOptions.SetMaxTime()

    • DropIndexesOptions.MaxTime, DropIndexesOptions.SetMaxTime()

    • ListIndexesOptions.MaxTime, ListIndexesOptions.SetMaxTime()

    • SessionOptions.DefaultMaxCommitTime, SessionOptions.SetDefaultMaxCommitTime()

    • TransactionOptions.MaxCommitTime, TransactionOptions.SetMaxCommitTime()

    • WriteConcern.WTimeout

    Em vez disso, você pode definir um tempo limite para seu cliente ou dentro de um contexto. Saiba mais na seção Configuração de tempo limite único do guia Opções de conexão.

Esta versão inclui as seguintes melhorias e correções:

  • Suporte para autenticação OpenID Connect (OIDC). Para saber mais, consulte a seção MONGODB-OIDC do guia Mecanismos de autenticação empresarial.

  • Você pode acessar a API GridFS a partir do mongo pacote . Em versões anteriores, você poderia acessar as funções GridFS a partir do gridfs pacote separado, mas essa funcionalidade agora está mesclada com o pacote principal do mongo driver. Para saber mais, consulte o guia GridFS .

  • O campo Comment em qualquer estrutura de opções obtém um valor do tipo any em vez do tipo string. Para definir esse campo, você pode usar o método SetComment() e passar um parâmetro do tipo any.

  • Atualizações nos documentos de evento de monitoramento:

    • As estruturas CommandStartedEvent e CommandFinishedEvent têm um único campo ServerConnectionID do tipo int64 para capturar o ID da conexão.

    • O campo ConnectionID da estrutura PoolEvent obtém um valor do tipo int64 em vez de uint64.

    Para visualizar exemplos de documentos de evento , consulte os guias de monitoramento.

  • A Session interface é convertida em uma estrutura. Consulte o guia Transações para saber mais.

  • O Distinct() método retorna uma estrutura que pode ser decodificada em um tipo especificado. Consulte o guia Retrieve Distinct Values (Recuperar valores distintos) para saber mais.

  • O IndexView.DropOne() método retorna somente um erro, se presente. Em versões anteriores, este método também retornou a resposta do servidor , que continha o número de índices descartados.Consulte a seção Remover um índice do guia Índices para saber mais.

  • Atualizações no padrão do construtor para tipos no options pacote. O padrão mantém uma fatia das funções de definição, portanto, você não pode definir dados diretamente para um objeto de opções. Geralmente, esta atualização não altera a forma como você cria e utiliza opções. Para saber mais, consulte o recurso JIRA ticket.

  • O driver não é mais compatível com o erro de alerta mongo.ErrUnacknowledgedWrite se uma operação de gravação não for confirmada. Para confirmar que o servidor reconheceu uma operação de gravação, você deve acessar a propriedade Acknowledged a partir da estrutura de resultados retornada pelo método de gravação.

    O exemplo a seguir mostra como confirmar a confirmação de uma operação de inserção:

    res, err := coll.InsertOne(context.TODO(), bson.D{{"x", 2}})
    if err != nil {
    panic(err)
    }
    fmt.Print(res.Acknowledged)
  • Você pode definir opções para transações executadas em uma determinada sessão criando uma TransactionOptions instância e passando a instância para o SetDefaultTransactionOptions() método do SessionOptions tipo. Para saber mais, consulte a seção Opções de sessão e transação do guia Transações.

  • O método Collection.Clone() não retorna um erro.

  • Renomeia o canonical parâmetro do UnmarshalExtJSON() método canonicalOnly para. Se você definir canonicalOnly truecomo, o método retornará um erro se o JSON estendido não for ordenado no modo canônico. Se definido false como, o método pode desordenar JSON estendido canônico ou relaxado. Para saber mais, consulte a documentação da API UnmarshardExtJSON().

Importante

v1.17 é o lançamento da versão 1.x final planejada. Esta versão receberá correções de segurança e bugs, mas o desenvolvimento e os recursos futuros serão incluídos somente nas versões 2.x do driver.

O 1.17 A versão do driver Go inclui as seguintes melhorias e correções:

  • Adiciona suporte para autenticação OpenID Connect (OIDC). Para saber mais, consulte a seção MONGODB-OIDC do guia Mecanismos de autenticação empresarial.

  • Adiciona suporte para queries de intervalo de Queryable Encryption (QE). Para usar esse recurso, seu aplicativo 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 .

  • Adiciona suporte para o MongoDB Server 8.0, exceto para o recurso de escrita em massa do cliente .

  • Amplia o tipo IndexView para incluir os métodos DropOneWithKey() e DropWithKey() para que você possa descartar índices usando suas especificações de chave em vez de seus nomes.

Para obter mais informações sobre as alterações nesta versão, consulte as 1.17 notas de versão v no Github.

O 1.16 A versão do driver Go inclui as seguintes melhorias e correções:

  • Adiciona suporte para especificar um tipo de índice ao criar um índice de Atlas Search .

  • Reduz o uso de memória quando o algoritmo de compressão zstd está ativado.

  • Atualiza alguns requisitos de dependência. Para obter uma lista de atualizações, consulte a seção "Dependências de atualização" das notas de versão v .1.16

Para obter mais informações sobre essas alterações, consulte as notas de versão v1.16 no Github.

O 1.15.1 A versão do patch do driver Go inclui as seguintes melhorias e correções:

  • Corrige um possível vazamento de conexão em que a desconexão de um cluster de conjunto de réplicas deixaa para trás rttMonitor conexões.

  • Adiciona suporte para a especificação manual de um valor de maxTimeMS para operações de leitura e agregação quando um tempo limite para todo o cliente e um tempo limite de operação são definidos.

  • Adiciona um método RemainingBatchLength() que você pode chamar em um fluxo de alteração.

Para obter mais informações sobre essas alterações, consulte as notas de versão v1.15.1 no Github.

O 1.15 A versão do driver Go inclui as seguintes melhorias e correções:

  • A rotatividade de conexão pode ser atenuada definindo um tempo limite em todo o cliente especificando a opção de conexão timeoutMS ou chamando a função SetTimeout(). Quando o tempo limite é definido, o driver tenta reutilizar uma conexão após o tempo limite de uma operação e aguarda até um segundo para verificar se a conexão pode ser reutilizada antes de fechá-la.

  • Os eventos do pool de conexões incluem um campo Duration para medir a duração do checkout e o tempo total necessário para estabelecer uma conexão.

O 1.14 A versão do driver Go inclui as seguintes melhorias e correções:

  • As versões do Go anteriores à 1.18 não são mais suportadas.

  • No caso de um tempo limite tipo heartbeat, as operações em andamento são canceladas preventivamente.

  • As cadeias de conexão que incluem o prefixo "mongodb+srv://" podem conter letras maiúsculas no nome do host SRV.

O 1.13 A versão do driver Go inclui as seguintes melhorias e correções:

  • Registro para seleção de servidor e SDAM. Para saber mais sobre registro em log, consulte a documentação de Log .

  • Métodos do tipo Collection que permitem gerenciar índices de pesquisa de forma programática.

  • Os eventos event.CommandStartedEvent e event.CommandFinishedEvent retornam o campo DatabaseName. Esse campo também está incluído nos análogos do log de comandos.

  • Em uma topologia fragmentada, ao selecionar um servidor para tentar novamente uma query malsucedida, o driver exclui o servidor usado para a tentativa inicial. Em vez disso, se houver mais de uma instância de mongos qualificada, o driver selecionará aleatoriamente uma. As instâncias não saudáveis são automaticamente excluídas da seleção.

  • O streaming do SDAM é desabilitado por padrão no AWS Lambda e plataformas semelhantes de função como serviço (FaaS). Você pode habilitar o monitoramento usando a opção serverMonitoringMode de URI .

O 1.12 A versão do driver Go inclui as seguintes melhorias e correções:

  • O driver libera conexões ao encerrar uma sessão. Isso evita vazamento de conexões quando um usuário executa uma transação enquanto está conectado a um balanceador de carga.

  • O driver não lança um erro de tempo de execução quando você desordena um tipo de bson.RawValue vazio com um tipo inválido ou desordena um ponteiro nil de uma instância ReadConcern.

  • Definir options.LogComponentAll como o componente de log corretamente resulta na publicação de logs em todos os componentes.

Importante

Aviso de depreciação

  • Os métodos mongo.NewClient() e client.Connect() estão obsoletos. Você pode criar um cliente e conectá-lo em uma chamada usando o método mongo.Connect() .

Novos recursos do 1.12 A versão do driver Go inclui:

Esta versão do driver adiciona compatibilidade para Queryable Encryption (QE). Para saber mais sobre os requisitos para usar o recurso QE, consulte a Tabela de compatibilidade do driver de Queryable Encryption.

O método ClientEncryption.CreateEncryptedCollection() cria automaticamente chaves de criptografia de dados quando você cria uma nova coleção criptografada. Para saber como utilizar o recurso QE, consulte o Início rápido no manual do servidor.

Agora você pode registrar eventos de gerenciamento de conexão e execução de comando usando a interface de log de LogSink.

Para saber mais, consulte o guia básico de Logging.

Esta versão do driver adiciona recursos ao pacote options para especificar como o driver ordena e desordena o BSON.

O exemplo a seguir mostra como definir as opções BSON em seu Client. As opções especificam os seguintes comportamentos:

  • O driver volta para as marcações de estrutura json se as marcações de estrutura bson estiverem ausentes.

  • O driver desordena tipos de mapa Go nil como documentos BSON vazios.

  • O driver ordena os tipos de fatia nil Go como arrays BSON vazias.

bsonOpts := &options.BSONOptions{
UseJSONStructTags: true,
NilMapAsEmpty: true,
NilSliceAsEmpty: true,
}
options.Client().SetBSONOptions(bsonOpts)

Para ver um exemplo completo de como especificar e implementar o tipo BSONOptions, consulte a documentação da API.

Esta versão do driver simplifica a API WriteConcern . Para saber mais sobre as mudanças, consulte Preocupação de gravação.

  • Suporte para autenticação com funções AWS IAM no EKS.

  • Adição do método Cursor.SetBatchSize() para permitir a especificação do tamanho dos lotes buscados ao iterar por meio de um cursor.

  • Adição do método UnmarshalValue() para permitir a desordenação dos valores de BSON ordenados com o método MarshalValue().

Voltar

Referência rápida