Ce chapitre présente comment Golang exprime la structure de données JSON de MongoDB. Comme nous le savons tous, les données MongoDB et les conditions de requête sont décrites à l'aide de structures JSON. Donc, comment pouvons-nous exprimer de telles structures JSON en langage Go ?

Package bson

Le pilote officiel du langage Go fourni par MongoDB offre un package bson, qui comprend plusieurs structures de données pour décrire des données JSON.

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

Le type bson.D est utilisé pour décrire des tableaux clé-valeur ordonnés, qui sont couramment utilisés pour exprimer des expressions de requête MongoDB et des données JSON.

Définition :

// Tableau clé-valeur
type D [] E

// Structure clé-valeur
type E struct {
	Key   string
	Value interface{}
}

Exemple d'expression de requête :

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

Expression équivalente :

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

Exemple de données de document :

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

JSON équivalent :

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

Le type bson.A est utilisé pour définir des tableaux JSON.

Définition des tableaux JSON :

type A []interface{}

Exemple 1 :

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

JSON équivalent :

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

Exemple 2 :

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

JSON équivalent :

["A", "D"]

Le type bson.M est utilisé pour décrire des paires clé-valeur non ordonnées, contrairement à bson.D, qui se soucie de l'ordre de stockage des clés.

Définition :

type M map[string]interface{}

Exemple :

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

JSON équivalent :

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