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
}