Dieses Kapitel führt ein, wie Golang die JSON-Datenstruktur von MongoDB ausdrückt. Wie wir alle wissen, werden MongoDB-Daten und Abfragebedingungen mithilfe von JSON-Strukturen beschrieben. Also, wie können wir solche JSON-Strukturen in der Go-Sprache ausdrücken?
bson-Paket
Der offizielle von MongoDB bereitgestellte Go-Sprachtreiber bietet ein bson-Paket, das mehrere Datenstrukturen zur Beschreibung von JSON-Daten enthält.
bson-Paket:
go.mongodb.org/mongo-driver/bson
Der Typ bson.D wird verwendet, um geordnete Schlüssel-Wert-Arrays zu beschreiben, die häufig zur Darstellung von MongoDB-Abfrageausdrücken und JSON-Daten verwendet werden.
Definition:
// Schlüssel-Wert-Array
type D [] E
// Schlüssel-Wert-Struktur
type E struct {
Schlüssel string
Wert interface{}
}
Beispiel eines Abfrageausdrucks:
bson.D{{"qty", bson.D{{"$lt", 30}}}}
Äquivalenter Ausdruck:
{"qty": {"$lt": 30} }
Beispiel von Dokumentdaten:
bson.D{
{"item", "journal"},
{"qty", 25},
{"size", bson.D{
{"h", 14},
{"w", 21},
{"uom", "cm"},
}},
{"status", "A"},
}
Äquivalenter JSON:
{
"item": "journal",
"qty": 25,
"size": {
"h": 14,
"w": 21,
"uom": "cm"
},
"status": "A"
}
Das bson.A wird verwendet, um JSON-Arrays zu definieren.
Definition von JSON-Arrays:
type A []interface{}
Beispiel 1:
bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}
Äquivalenter JSON:
["bar", "world", 3.14159, {"qux": 12345}]
Beispiel 2:
bson.A{"A", "D"}
Äquivalenter JSON:
["A", "D"]
Das bson.M wird verwendet, um ungeordnete Schlüssel-Wert-Paare zu beschreiben, im Gegensatz zu bson.D, das die Speicherreihenfolge von Schlüsseln berücksichtigt.
Definition:
type M map[string]interface{}
Beispiel:
bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}
Äquivalenter JSON:
{
"foo": "bar",
"hello": "world",
"pi": 3.14159
}