Ten rozdział prezentuje sposób, w jaki Golang wyraża strukturę danych JSON w MongoDB. Jak wiemy, dane MongoDB i warunki zapytań opisane są za pomocą struktur JSON. Jak zatem możemy wyrazić takie struktury JSON w języku Go?
Pakiet bson
Oficjalny sterownik języka Go dostarczany przez MongoDB oferuje pakiet bson, który zawiera kilka struktur danych do opisywania danych JSON.
Pakiet bson:
go.mongodb.org/mongo-driver/bson
Typ bson.D służy do opisywania uporządkowanych tablic klucz-wartość, które są powszechnie używane do wyrażania warunków zapytań MongoDB i danych JSON.
Definicja:
// Tablica klucz-wartość
type D [] E
// Struktura klucz-wartość
type E struct {
Klucz string
Wartość interface{}
}
Przykład wyrażenia zapytania:
bson.D{{"qty", bson.D{{"$lt", 30}}}}
Równoważne wyrażenie:
{"qty": {"$lt": 30} }
Przykład danych dokumentu:
```go
bson.D{
{"item", "journal"},
{"qty", 25},
{"size", bson.D{
{"h", 14},
{"w", 21},
{"uom", "cm"},
}},
{"status", "A"},
}
Równoważny JSON:
{
"item": "journal",
"qty": 25,
"size": {
"h": 14,
"w": 21,
"uom": "cm"
},
"status": "A"
}
Typ bson.A służy do definiowania tablic JSON.
Definicja tablicy JSON:
type A []interface{}
Przykład 1:
bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}
Równoważny JSON:
["bar", "world", 3.14159, {"qux": 12345}]
Przykład 2:
bson.A{"A", "D"}
Równoważny JSON:
["A", "D"]
Typ bson.M służy do opisywania nieuporządkowanych par klucz-wartość, w przeciwieństwie do bson.D, który dba o kolejność przechowywania kluczy.
Definicja:
type M map[string]interface{}
Przykład:
bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}
Równoważny JSON:
{
"foo": "bar",
"hello": "world",
"pi": 3.14159
}