Puede realizar operaciones de escritura masiva en una colección mediante el uso de
BulkWrite() .
Ejemplo
Tip
Lea el Ejemplos de uso para aprender a ejecutar este ejemplo.
Este ejemplo utiliza la siguiente estructura Restaurant 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 de estructura omite el campo correspondiente del documento insertado cuando se deja vacía.
El siguiente ejemplo realiza lo siguiente en orden en la colección restaurants:
Coincide con un documento en el que
namees "Cafe Tomato" y lo reemplaza con un nuevo documentoCoincide con un documento en el que
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)
Ver una ejemplo completamente ejecutable
Resultado esperado
Después de ejecutar el ejemplo completo, podrá encontrar el siguiente documento en la colección restaurants:
{ "_id": ObjectId("..."), "name": "Zucchini Land", "cuisine": "French" }
Para ver un ejemplo sobre cómo encontrar un documento, consulte Buscar un documento.
Información Adicional
Para obtener más información sobre cómo realizar operaciones de escritura masiva en una colección y manejar posibles errores, consulte Operaciones masivas.