Este capítulo presenta cómo Golang expresa la estructura de datos JSON de MongoDB. Como todos sabemos, los datos de MongoDB y las condiciones de consulta se describen utilizando estructuras JSON. Entonces, ¿cómo podemos expresar tales estructuras JSON en el lenguaje Go?
Paquete bson
El controlador oficial del lenguaje Go proporcionado por MongoDB ofrece un paquete bson, que incluye varias estructuras de datos para describir datos JSON.
Paquete bson:
go.mongodb.org/mongo-driver/bson
El tipo bson.D se utiliza para describir matrices de pares clave-valor ordenados, que se utilizan comúnmente para expresar expresiones de consulta de MongoDB y datos JSON.
Definición:
// Matriz de pares clave-valor
type D [] E
// Estructura de pares clave-valor
type E struct {
Key string
Value interface{}
}
Ejemplo de una expresión de consulta:
bson.D{{"qty", bson.D{{"$lt", 30}}}}
Expresión equivalente:
{"qty": {"$lt": 30}}
Ejemplo de datos de documento:
```go
bson.D{
{"item", "journal"},
{"qty", 25},
{"size", bson.D{
{"h", 14},
{"w", 21},
{"uom", "cm"},
}},
{"status", "A"},
}
JSON equivalente:
{
"item": "journal",
"qty": 25,
"size": {
"h": 14,
"w": 21,
"uom": "cm"
},
"status": "A"
}
El tipo bson.A se utiliza para definir arreglos JSON.
Definición de arreglos JSON:
type A []interface{}
Ejemplo 1:
bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}
JSON equivalente:
["bar", "world", 3.14159, {"qux": 12345}]
Ejemplo 2:
bson.A{"A", "D"}
JSON equivalente:
["A", "D"]
El tipo bson.M se utiliza para describir pares clave-valor desordenados, a diferencia de bson.D, que se preocupa por el orden de almacenamiento de las claves.
Definición:
type M map[string]interface{}
Ejemplo:
bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}
JSON equivalente:
{
"foo": "bar",
"hello": "world",
"pi": 3.14159
}