Overview
En esta guía, puedes aprender cómo remover documentos de tus colecciones de MongoDB usando operaciones de borrar.
Datos de muestra
El ejemplo en esta guía utiliza lo siguiente Book Estructura como modelo para los documentos de la colección books:
type Book struct { Title string Author string Length int32 }
Para ejecutar el ejemplo de esta guía, carga los datos de muestra en la colección db.books con el siguiente snippet:
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 contiene una descripción de un libro que incluye el título, el autor y la longitud de la página correspondiente a los campos title, author y length de cada documento.
Tip
Bases de datos y colecciones inexistentes
Si la base de datos y la colección necesarias no existen cuando realizas una operación de guardar, el servidor las crea implícitamente.
Operaciones de borrar
Utiliza operaciones de borrar para remover datos de MongoDB. Las operaciones de borrado consisten en los siguientes métodos:
DeleteOne(), que elimina el primer documento que coincide con el filtroDeleteMany()y elimina todos los documentos que correspondan al filtro
Tip
Si un documento coincide con tu filtro al ejecutar el método DeleteMany(), es equivalente a ejecutar el método DeleteOne().
Parámetros
Los métodos DeleteOne() y DeleteMany() esperan que se pase un tipo de Context y un filtro de query de non-nil que especifique qué documentos deben coincidir.
Ambos pueden tomar opcionalmente un tipo DeleteOptions como tercer parámetro, que representa las opciones que se pueden utilizer para configurar la operación de borrado. Si no especificas un DeleteOptions, el driver utiliza los valores por defecto para cada opción.
El tipo DeleteOptions te permite configurar opciones con los siguientes métodos:
Método | Descripción |
|---|---|
| The index to use to scan for documents to delete. Default: nil |
| The type of language collation to use when sorting results. Default: nil |
Valor de retorno
Los métodos DeleteOne() y DeleteMany() devuelven un tipo DeleteResult. Este tipo contiene la propiedad DeletedCount, que indica el número de documentos eliminados. Si no hay coincidencias con tu filtro, no se borrará ningún documento y DeletedCount será 0.
Ejemplo
El siguiente ejemplo realiza lo siguiente con el método DeleteMany():
Empareja y borra documentos donde el
lengthes mayor que300Indica al método que utilice
_idcomo í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
Tip
Si el ejemplo anterior hubiera utilizado el método DeleteOne() en lugar de DeleteMany(), el controlador habría eliminado el primero de los dos documentos coincidentes.
Ejemplo de deleteOne(): Archivo completo
Nota
Configuración de ejemplo
Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectar con su instancia de MongoDB, consulte Crear un MongoClient. Este ejemplo también usa la colección restaurants en la base de datos sample_restaurants incluida en la Conjuntos de datos de ejemplo de Atlas. Puedes cargarlos en tu base de datos en la versión gratuita de MongoDB Atlas siguiendo los pasos que se indican en la guía "Primeros pasos con Atlas".
El siguiente ejemplo es un archivo completamente ejecutable que encuentra y elimina un documento existente en la colección 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/es/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
Ejemplo de deleteMany(): Archivo completo
Nota
Configuración de ejemplo
Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para aprender más sobre cómo conectarte a tu instancia de MongoDB, consulta Crear un MongoClient. Este ejemplo también utiliza la colección restaurants en la base de datos sample_restaurants incluida en los conjuntos de datos de muestra de Atlas. Puede cargarlos en su base de datos en el nivel gratuito de MongoDB Atlas siguiendo los pasos en Introducción a Atlas.
El siguiente ejemplo es un archivo completamente ejecutable que realiza las siguientes acciones en la colección restaurants:
Coincide y elimina documentos donde el valor del campo
cuisineesGermany el valor del campoboroughesQueensElimina todos los documentos coincidentes
// 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/es/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
Información Adicional
Para obtener más información sobre cómo realizar las operaciones mencionadas, consulte las siguientes guías:
Para obtener más información sobre cómo el controlador utiliza Context,consulte Paquete Context.
Para obtener más información sobre cómo especificar sugerencias,consulte Índices.
Para aprender más sobre las intercalaciones, consulta Intercalación.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: