Bu bölüm, Golang'ın MongoDB'nin JSON veri yapısını nasıl ifade ettiğini tanıtıyor. Hepimizin bildiği gibi, MongoDB verileri ve sorgu koşulları JSON yapıları kullanılarak açıklanır. Peki, Go dilinde bu tür JSON yapılarını nasıl ifade edebiliriz?

bson paketi

MongoDB tarafından sağlanan resmi Go dil sürücüsü, JSON verilerini tanımlamak için birkaç veri yapısını içeren bir bson paketi sunar.

bson paketi: go.mongodb.org/mongo-driver/bson

bson.D türü, MongoDB sorgu ifadelerini ve JSON verilerini ifade etmek için yaygın olarak kullanılan sıralı anahtar-değer dizilerini tanımlamak için kullanılır.

Tanım:

// Anahtar-değer dizisi
type D [] E

// Anahtar-değer yapısı
type E struct {
	Key   string
	Value interface{}
}

Sorgu ifadesi örneği:

bson.D{{"qty", bson.D{{"$lt", 30}}}}

Eşdeğer ifade:

{"qty": {"$lt": 30} }

Belge verisi örneği:

bson.D{
	{"item", "journal"},
	{"qty", 25},
	{"size", bson.D{
		{"h", 14},
		{"w", 21},
		{"uom", "cm"},
	}},
	{"status", "A"},
}

Eşdeğer JSON:

{
	"item": "journal",
	"qty": 25,
	"size": {
		"h": 14,
		"w": 21,
		"uom": "cm"
	},
	"status": "A"
}

bson.A, JSON dizilerini tanımlamak için kullanılır.

JSON dizilerinin tanımı:

type A []interface{}

Örnek 1:

bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}

Eşdeğer JSON:

["bar", "world", 3.14159, {"qux": 12345}]

Örnek 2:

bson.A{"A", "D"}

Eşdeğer JSON:

["A", "D"]

bson.M, bson.D'nin aksine anahtar-değer çiftlerinin depolama sırasına aldırış etmeyen sırasız anahtar-değer çiftlerini açıklamak için kullanılır.

Tanım:

type M map[string]interface{}

Örnek:

bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}

Eşdeğer JSON:

{
	"foo": "bar",
	"hello": "world",
	"pi": 3.14159
}