Docs Menu
Docs Home
/ /

Delete Documents

En esta guía, puedes aprender cómo remover documentos de tus colecciones de MongoDB usando operaciones de borrar.

El ejemplo de 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, cargue los datos de muestra en la colección db.books con el siguiente fragmento:

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 realiza una operación de escritura, el servidor las crea implícitamente.

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 filtro

  • DeleteMany(), que elimina todos los documentos que coinciden con el filtro

Tip

Si un documento coincide con su filtro al ejecutar el método DeleteMany(), es equivalente a ejecutar el método DeleteOne().

Los métodos DeleteOne() y DeleteMany() esperan que usted pase un tipo Context y un filtro de consulta non-nil que especifique qué documentos coincidirán.

Ambos aceptan opcionalmente el tipo DeleteOptions como tercer parámetro, que representa las opciones que se pueden usar para configurar la operación de eliminación. Si no se especifica un DeleteOptions, el controlador usa los valores predeterminados para cada opción.

El tipo DeleteOptions le permite configurar opciones con los siguientes métodos:

Método
Descripción

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

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.

El siguiente ejemplo realiza lo siguiente con el método DeleteMany():

  • Coincide y elimina documentos donde length es mayor que 300

  • Indica al método que utilice _id como í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 en el ejemplo anterior se utilizara el método DeleteOne() en lugar de DeleteMany(), el controlador eliminaría el primero de los dos documentos coincidentes.

Nota

Configuración de ejemplo

Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte Cree una guía de MongoClient. Este ejemplo también utiliza la restaurants colección en la sample_restaurants base de datos incluida en el Conjuntos de datos de muestra de Atlas. Puede cargarlos en su base de datos en la versión gratuita de MongoDB Atlas siguiendo la Guía de introducción a Atlas.

El siguiente ejemplo es un archivo completamente ejecutable que busca 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

Nota

Configuración de ejemplo

Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte la guía "Crear un MongoClient". Este ejemplo también utiliza la restaurants colección de la sample_restaurants base de datos incluida en los conjuntos de datos de ejemplo de Atlas. Puede cargarlos en su base de datos en la versión gratuita de MongoDB Atlas siguiendo la Guía de 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 cuisine es German y el valor del campo borough es Queens

  • Elimina 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

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 obtener más información sobre intercalaciones, consulte Intercalación.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Inserción

En esta página