Menu Docs
Página inicial do Docs
/ /

Exclua documentos

Neste guia, você pode aprender como remover documentos de suas coleções MongoDB usando operações de exclusão.

O exemplo nesta aba usa o seguinte struct Book como um modelo para documentos na collection books:

type Book struct {
Title string
Author string
Length int32
}

Para executar o exemplo nesta aba, carregue os dados de amostra na collection db.books com o seguinte trecho:

coll := client.Database("db").Collection("books")
docs := []any{
Book{Title: "Atonement", Author: "Ian McEwan", Length: 351},
Book{Title: "My Brilliant Friend", Author: "Elena Ferrante", Length: 331},
Book{Title: "Lucy", Author: "Jamaica Kincaid", Length: 103},
Book{Title: "Outline", Author: "Rachel Cusk", Length: 258},
}
result, err := coll.InsertMany(context.TODO(), docs)

Cada documento contém uma descrição de um livro que inclui o título, o autor e o comprimento da página correspondentes aos campos title, author e length em cada documento.

Dica

Bancos de Dados e Coleções Inexistentes

Se o banco de dados e a collection necessários não existirem quando você executar uma operação de escrita, o servidor implicitamente os criará.

Use excluir operações para remover dados do MongoDB. As operações de exclusão consistem nos seguintes métodos:

  • DeleteOne(), que exclui o primeiro documento que corresponde ao filtro

  • DeleteMany(), que exclui todos os documentos que correspondem ao filtro

Dica

Se um documento corresponder ao seu filtro ao executar o método DeleteMany(), será equivalente à execução do método DeleteOne().

Os métodos DeleteOne() e DeleteMany() esperam que você passe um tipo Context e um filtro de query non-nil especificando quais documentos devem corresponder.

Ambos recebem opcionalmente um tipo DeleteOptions como terceiro parâmetro, que representa opções que você pode usar para configurar a operação de exclusão. Se você não especificar um DeleteOptions, o driver utilizará os valores padrão para cada opção.

O tipo DeleteOptions permite a você configurar opções com os seguintes métodos:

Método
Descrição

SetHint()

The index to use to scan for documents to delete.
Default: nil

SetCollation()

The type of language collation to use when sorting results.
Default: nil

Os métodos DeleteOne() e DeleteMany() retornam um tipo de DeleteResult. Este tipo contém a propriedade DeletedCount, que declara o número de documentos excluídos. Se não houver nenhuma correspondência com seu filtro, nenhum documento será excluído e DeletedCount será 0.

O exemplo abaixo executa o seguinte com o método DeleteMany():

  • Corresponde e exclui documentos onde o length é maior que 300

  • Instrói o método para utilizar o _id como o índice

filter := bson.D{{"length", bson.D{{"$gt", 300}}}}
opts := options.Delete().SetHint(bson.D{{"_id", 1}})
result, err := coll.DeleteMany(context.TODO(), filter, opts)
if err != nil {
panic(err)
}
fmt.Printf("Number of documents deleted: %d\n", result.DeletedCount)
Number of documents deleted: 2

Dica

Se o exemplo anterior usasse o método DeleteOne() em vez de DeleteMany(), o driver excluiria o primeiro dos dois documentos correspondentes.

Observação

Exemplo de configuração

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o guia Criar um MongoClient. Este exemplo também utiliza a coleção do restaurants no banco de dados do sample_restaurants incluído nosconjuntos de dados de amostra do Atlas do . Você pode carregá-los em seu banco de dados na camada grátis do MongoDB Atlas seguindo o Guia de Introdução ao Atlas.

O exemplo a seguir é um arquivo totalmente executável que localiza e exclui um documento existente na coleção restaurants.

// Deletes a document from a collection by using the Go driver
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
// Defines a Restaurant struct as a model for documents in the "restaurants" collection
type Restaurant struct {
ID bson.ObjectID `bson:"_id"`
Name string `bson:"name"`
Cuisine string `bson:"cuisine,omitempty"`
Address interface{} `bson:"address,omitempty"`
Borough string `bson:"borough,omitempty"`
Grades []interface{} `bson:"grades,omitempty"`
}
func main() {
if err := godotenv.Load(); err != nil {
log.Println("No .env file found")
}
var uri string
if uri = os.Getenv("MONGODB_URI"); uri == "" {
log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://www.mongodb.com/pt-br/docs/drivers/go/current/connect/mongoclient/#environment-variable")
}
client, err := mongo.Connect(options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
if err = client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
coll := client.Database("sample_restaurants").Collection("restaurants")
filter := bson.D{{"name", "New Corner"}}
// Deletes the first document that has a "name" value of "New Corner"
result, err := coll.DeleteOne(context.TODO(), filter)
// Prints a message if any errors occur during the operation
if err != nil {
panic(err)
}
// Prints the number of deleted documents
fmt.Printf("Documents deleted: %d\n", result.DeletedCount)
// When you run this file for the first time, it prints output similar to the following:
// Documents deleted: 1
}
Documents deleted: 1

Observação

Exemplo de configuração

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o guia Como criar um MongoClient. Este exemplo também utiliza a coleção do restaurants no banco de dados do sample_restaurants incluído nos conjuntos de dados de amostra do Atlas. Você pode carregá-los em seu banco de dados na camada grátis do MongoDB Atlas seguindo o Guia de Introdução ao Atlas.

O exemplo a seguir é um arquivo totalmente executável que executa as seguintes ações na coleção restaurants :

  • Corresponde e exclui documentos onde o valor do campo cuisine é German e o valor do campo borough é Queens

  • Exclui todos os documentos correspondentes

// Deletes multiple documents from a collection by using the Go driver
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
// Defines a Restaurant struct as a model for documents in the "restaurants" collection
type Restaurant struct {
ID bson.ObjectID `bson:"_id"`
Name string `bson:"name"`
Borough string `bson:"borough"`
Cuisine string `bson:"cuisine"`
}
func main() {
if err := godotenv.Load(); err != nil {
log.Println("No .env file found")
}
var uri string
if uri = os.Getenv("MONGODB_URI"); uri == "" {
log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://www.mongodb.com/pt-br/docs/drivers/go/current/connect/mongoclient/#environment-variable")
}
client, err := mongo.Connect(options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
if err = client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
coll := client.Database("sample_restaurants").Collection("restaurants")
filter := bson.D{
{"borough", "Queens"},
{"cuisine", "German"},
}
// Deletes all documents that have a "Borough" value of "Queens" and a "Cuisine" value of "German"
results, err := coll.DeleteMany(context.TODO(), filter)
if err != nil {
panic(err)
}
// Prints the number of deleted documents
fmt.Printf("Documents deleted: %d\n", results.DeletedCount)
// When you run this file for the first time, it prints output similar to the following:
// Documents deleted: 6
}
Documents deleted: 6

Para saber mais sobre como executar as operações mencionadas, consulte os seguintes guias:

Para saber como o driver usa o Contexto, consulte Pacote de contexto.

Para saber mais sobre como especificar sugestões, consulte Índices.

Para saber mais sobre agrupamentos,consulte Agrupamento.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Upsert

Nesta página