บทนี้เป็นการนำเสนอถึงวิธีการแสดงนิพจน์ข้อมูล JSON ของ MongoDB ใน Golang โดย MongoDB นั้นข้อมูลและเงื่อนไขในคำค้นถูกบรรยายด้วยโครงสร้าง JSON เราจะเรียนรู้ว่าเราสามารถแสดงโครงสร้าง JSON เช่นนี้ได้ในภาษา Go อย่างไร
แพ็คเกจ bson
ไดรเวอร์ภาษา Go ที่เป็นทางการจาก MongoDB มีแพ็คเกจ 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
}