تقدم هذه الفصل كيفية تعبير جيولانغ عن هيكل البيانات JSON لقاعدة بيانات MongoDB. كما نعلم جميعاً، يتم وصف البيانات وشروط الاستعلام في MongoDB باستخدام هياكل JSON. فكيف يمكننا التعبير عن مثل هذه الهياكل JSON في لغة البرمجة جو؟
مكتبة bson
يقدم سائق اللغة الرسمية لجو المكتبة bson، والتي تتضمن عدة هياكل بيانات لوصف البيانات JSON.
مكتبة bson:
go.mongodb.org/mongo-driver/bson
يُستخدم نوع bson.D لوصف مصفوفات مفاتيح-قيم مرتبة، والتي تُستخدم عادة للتعبير عن تعابير استعلام MongoDB وبيانات JSON.
التعريف:
// مصفوفة مفاتيح-قيم
type D [] E
// هيكل مفتاح-قيم
type E struct {
Key string
Value interface{}
}
مثال على تعبير الاستعلام:
bson.D{{"qty", bson.D{{"$lt", 30}}}}
التعبير المكافئ:
{"qty": {"$lt": 30} }
مثال على بيانات المستند:
bson.D{
{"item", "journal"},
{"qty", 25},
{"size", bson.D{
{"h", 14},
{"w", 21},
{"uom", "cm"},
}},
{"status", "A"},
}
JSON المكافئ:
{
"item": "journal",
"qty": 25,
"size": {
"h": 14,
"w": 21,
"uom": "cm"
},
"status": "A"
}
يتم استخدام bson.A لتحديد مصفوفات JSON.
تعريف مصفوفات JSON:
type A []interface{}
مثال 1:
bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}}
JSON المكافئ:
["bar", "world", 3.14159, {"qux": 12345}]
مثال 2:
bson.A{"A", "D"}
JSON المكافئ:
["A", "D"]
يُستخدم bson.M لوصف أزواج مفاتيح-قيم غير مرتبة، على عكس bson.D التي تهتم بترتيب تخزين المفاتيح.
التعريف:
type M map[string]interface{}
مثال:
bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}
JSON المكافئ:
{
"foo": "bar",
"hello": "world",
"pi": 3.14159
}