این فصل به معرفی نحوه‌ای که گولانگ از ترکیب‌داده JSON در مانگو دیتابیس استفاده می‌کند، می‌پردازد. همانطور که می‌دانیم، داده‌ها و شرایط جستجو در مانگو دیتابیس از طریق ساختارهای JSON توصیف می‌شوند. پس چگونه می‌توانیم این ساختارهای JSON را در زبان گولانگ بیان کنیم؟

بسته bson

درایور رسمی زبان گولانگ ارائه شده توسط مانگو دیتابیس یک بسته به نام bson ارائه می‌دهد که شامل چندین ساختار داده برای توصیف داده‌های JSON است.

بسته bson: go.mongodb.org/mongo-driver/bson

نوع bson.D برای توصیف آرایه‌های مرتب کلید-مقدار استفاده می‌شود که به طور معمول برای بیان عبارت‌های جستجوی مانگو دیتابیس و داده‌های 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{}

مثال ۱:

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

JSON معادل:

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

مثال ۲:

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
}