Realizar operações em massa
Você pode realizar operações de escrita em massa em uma collection usando o método BulkWrite()
.
Exemplo
Dica
Leia os Exemplos de uso para saber como executar este exemplo.
Este exemplo utiliza a seguinte estrutura Restaurant
como um modelo para documentos na collection 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"` }
A tag struct omitempty
omite o campo correspondente do documento inserido quando deixado vazio.
O exemplo a seguir executa o seguinte em ordem na collection restaurants
:
Corresponde a um documento no qual
name
é "Cafe Tomato" e o substitui por um novo documentoCorresponde a um documento no qual
name
é "Cafe Zucchini" e atualiza o valor para "Zucchini Land"
coll := client.Database("sample_restaurants").Collection("restaurants") 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"}}}}), } opts := options.BulkWrite().SetOrdered(true) results, err := coll.BulkWrite(context.TODO(), models, opts)
Visualizar um exemplo completamente executável
Resultado esperado
Após executar o exemplo completo, você pode encontrar o seguinte documento na collection restaurants
:
{ "_id": ObjectId("..."), "name": "Zucchini Land", "cuisine": "French" }
Para obter um exemplo sobre como localizar um documento, consulte Localizar um documento.
Informações adicionais
Para saber mais sobre como executar operações de escrita em massa em uma collection e lidar com possíveis erros, consulte Operações em massa.