Este capítulo apresenta como o Golang expressa a estrutura de dados JSON do MongoDB. Como todos sabemos, os dados do MongoDB e as condições de consulta são descritos usando estruturas JSON. Então, como podemos expressar tais estruturas JSON na linguagem Go?
Pacote bson
O driver oficial da linguagem Go fornecido pelo MongoDB oferece um pacote bson, que inclui várias estruturas de dados para descrever dados JSON.
Pacote bson:
go.mongodb.org/mongo-driver/bson
O tipo bson.D é usado para descrever arrays de pares chave-valor ordenados, que são comumente usados para expressar expressões de consulta do MongoDB e dados JSON.
Definição:
// Array de pares chave-valor
type D [] E
// Estrutura de chave-valor
type E struct {
Chave string
Valor interface{}
}
Exemplo de uma expressão de consulta:
bson.D{{"qty", bson.D{{"$lt", 30}}}}
Expressão equivalente:
{"qty": {"$lt": 30} }
Exemplo de dados do documento:
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"
}
O tipo bson.A é usado para definir arrays JSON.
Definição de arrays JSON:
type A []interface{}
Exemplo 1:
bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}
JSON equivalente:
["bar", "world", 3.14159, {"qux": 12345}]
Exemplo 2:
bson.A{"A", "D"}
JSON equivalente:
["A", "D"]
O tipo bson.M é usado para descrever pares chave-valor não ordenados, ao contrário do bson.D, que se importa com a ordem de armazenamento das chaves.
Definição:
type M map[string]interface{}
Exemplo:
bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}
JSON equivalente:
{
"foo": "bar",
"hello": "world",
"pi": 3.14159
}