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
}