Puedes realizar operaciones masivas de guardar en una colección utilizando el método BulkWrite().
Ejemplo
Tip
Lee los Ejemplos de uso para aprender cómo ejecutar este ejemplo.
Este ejemplo utiliza la siguiente Restaurant estructura como modelo para los documentos de la colección restaurants:
type Restaurant struct { Name string RestaurantId string `bson:"restaurant_id,omitempty"` Cuisine string `bson:"cuisine,omitempty"` Address interface{} `bson:"address,omitempty"` Borough string `bson:"borough,omitempty"` Grades []interface{} `bson:"grades,omitempty"` }
La omitempty etiqueta struct omite el campo correspondiente del documento insertado cuando se deja vacío.
El siguiente ejemplo realiza lo siguiente en orden en la colección restaurants:
Coincide con un documento en el que el
namees "Cafe Tomato" y lo reemplaza con un nuevo documentoCoincide con un documento en el que el
namees "Cafe Zucchini" y actualiza el valor a "Zucchini Land"
coll := client.Database("sample_restaurants").Collection("restaurants") // Creates write models that specify replace and update operations models := []mongo.WriteModel{ mongo.NewReplaceOneModel().SetFilter(bson.D{{"name", "Cafe Tomato"}}). SetReplacement(Restaurant{Name: "Cafe Zucchini", Cuisine: "French"}), mongo.NewUpdateOneModel().SetFilter(bson.D{{"name", "Cafe Zucchini"}}). SetUpdate(bson.D{{"$set", bson.D{{"name", "Zucchini Land"}}}}), } // Specifies that the bulk write is ordered opts := options.BulkWrite().SetOrdered(true) // Runs a bulk write operation for the specified write operations results, err := coll.BulkWrite(context.TODO(), models, opts)
Resultado esperado
Después de ejecutar el ejemplo completo, puedes encontrar el siguiente documento en la colección restaurants:
{ "_id": ObjectId("..."), "name": "Zucchini Land", "cuisine": "French" }
Para obtener un ejemplo de cómo encontrar un documento, consulta Encontrar un documento.
Información Adicional
Para saber más sobre cómo realizar operaciones de escritura masiva en una colección y gestionar posibles errores, consulta Operaciones masivas.