Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver GO
/

Usar tags estruturadas

Você pode especificar a maneira como o Go Driver converte as estruturas Go em BSON usando tags estrutura.

Observação

Exemplo de configuração

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o guia Criar um MongoClient. Este exemplo também utiliza a coleção restaurants no banco de dados sample_restaurants incluído nos conjuntos de dados de amostra do Atlas. Você pode carregá-los em seu banco de dados na camada grátis do MongoDB Atlas seguindo o Guia de Introdução ao Atlas.

Este exemplo declara uma estrutura do tipo Restaurant com as seguintes marcações de estrutura:

  • Uma marcação estruturada que mapeia o campo RestaurantId para o nome de campo BSON restaurant_id. Por padrão, o driver transfere os outros campos como a letra minúscula do nome do campo da estrutura.

  • A tag struct omitempty omite o campo correspondente do documento inserido quando deixado vazio.

O código a seguir mostra a estrutura Restaurant usada no exemplo:

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"`
}

O exemplo a seguir cria uma instância Restaurant e a insere na coleção restaurants. Durante a operação de inserção, o driver interpreta as marcações de estrutura para organizar o campo de estrutura RestaurantId como restaurant_id e omite os campos que são deixados vazios no documento de amostra:

// Specifies struct tags on a struct by using the Go driver
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
// Specifies a different name for RestaurantID
// and marks certain fields as omitempty
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"`
}
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/pt-br/docs/drivers/go/current/usage-examples/#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")
// Creates a Restaurant document
newRestaurant := Restaurant{
Name: "Amazing Pizza",
RestaurantId: "123456789",
Cuisine: "American",
}
// Inserts the sample document describing a restaurant into the collection
result, err := coll.InsertOne(context.TODO(), newRestaurant)
if err != nil {
panic(err)
}
// Prints the ID of the inserted document
fmt.Printf("Document inserted with ID: %s\n", result.InsertedID)
// When you run this file, it should print:
// Document inserted with ID: ObjectID("...")
}
Document inserted with ID: ObjectID("...")

Após executar o exemplo completo, você pode encontrar o seguinte documento na collection restaurants:

{
"_id" : ObjectId("..."),
"name" : "Amazing Pizza",
"restaurant_id" : "123456789",
"cuisine" : "American
}

Para obter um exemplo de como localizar um documento, consulte o guia Como localizar documentos.

Para saber mais sobre o uso de marcações de estrutura, conversão de/para BSON e tratamento de possíveis erros, consulte o guia Trabalhar com BSON.

Voltar

Data Formats