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
}