Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Usar etiquetas de struct

Puedes especificar la forma en que el Go Driver convierte las estructuras de Go a BSON utilizando etiquetas struct.

Nota

Configuración de ejemplo

Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectar con su instancia de MongoDB, consulte Crear un MongoClient. Este ejemplo también utiliza el restaurants colección en la base de datos sample_restaurants incluida en los conjuntos de datos de muestra de Atlas. Puedes cargarlos en tu base de datos en el nivel gratuito de MongoDB Atlas siguiendo los pasos en Comienza con Atlas.

Este ejemplo declara una estructura de tipo Restaurant con las siguientes etiquetas de estructura:

  • Una etiqueta de estructura que asigna el campo RestaurantId al nombre del campo BSON restaurant_id. Por defecto, el controlador traslada los otros campos en minúscula del nombre del campo de la estructura.

  • La etiqueta struct omitempty omite el campo correspondiente del documento insertado cuando se deja en blanco.

El siguiente código muestra la estructura Restaurant utilizada en el ejemplo:

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

El siguiente ejemplo crea una instancia de Restaurant y la inserta en la colección restaurants. Durante la operación de inserción, el driver interpreta las etiquetas de struct para convertir el campo de struct RestaurantId como restaurant_id y omite los campos que se dejan vacíos en el documento de muestra:

// 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/es/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("...")

Después de ejecutar el ejemplo completo, puedes encontrar el siguiente documento en la colección restaurants:

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

Para ver un ejemplo de cómo encontrar un documento, consulta la guía Encontrar documentos.

Para obtener más información sobre el uso de etiquetas de estructura, la conversión hacia/desde BSON y la gestión de posibles errores, consulte la guía Trabajar con BSON.

Volver

Agregación