BSON (Binary JSON) est une sérialisation encodée en binaire de documents de type JSON utilisés dans les bases de données MongoDB. Cet article fournit un aperçu de BSON, le format de données binaire utilisé par MongoDB pour stocker des documents.
Il explique ce qu'est BSON, comment il étend les capacités de JSON et les principales différences entre BSON et JSON. De plus, il inclut comment Apidog gère cela automatiquement. Il montre également des exemples d'opérations CRUD de base et de commandes de base de données en utilisant Apidog pour interagir avec MongoDB.
Qu'est-ce que BSON dans MongoDB ?
BSON (Binary JSON) est le principal format de données utilisé dans les bases de données MongoDB. Quelques points clés à connaître sur BSON dans MongoDB :
- BSON est une représentation binaire des documents JSON. Il étend JSON avec des types de données supplémentaires comme les dates, les horodatages, les données binaires, etc.
- MongoDB stocke toutes les données en interne sous forme de BSON. Lorsque vous insérez un document dans MongoDB, il est d'abord converti en BSON avant d'être écrit sur le disque.
- BSON encode les informations de type et de longueur, ce qui permet à MongoDB d'analyser et de parcourir efficacement les documents sans examiner et interpréter chacun d'eux. Cela améliore les performances.
- BSON est conçu pour être léger, traversable et efficace à encoder/décoder. Cela le rend bien adapté comme format de stockage et d'échange de données pour MongoDB.
- L'extension de fichier par défaut pour les fichiers BSON est .bson. Les outils Mongo comme Mongoexport peuvent être utilisés pour exporter les données MongoDB vers BSON pour les sauvegardes ou les migrations.
- BSON est conçu pour être hautement traversable. Les requêtes MongoDB utilisent des index pour localiser et récupérer rapidement les résultats sans analyser chaque document.
Structure d'un document BSON
BSON (Binary JSON) est une sérialisation encodée en binaire de documents de type JSON utilisés dans les bases de données MongoDB. Un document BSON contient des paires champ-valeur ordonnées similaires aux objets JSON.
Les champs peuvent être des chaînes UTF-8 valides, tandis que les valeurs peuvent être l'un des nombreux types de données BSON comme chaîne, entier, double, données binaires, tableau, document, booléen, date, null, etc. La structure d'un document BSON commence par un entier de 4 octets indiquant la taille totale du document.
Vient ensuite une paire champ-valeur contenant le champ "_id" qui identifie de manière unique le document. Le contenu du document suit avec chaque paire champ-valeur encodée dans un format binaire spécifique basé sur le type de données.
Un exemple montrant la structure d'un document BSON :
// Sample BSON document
{
_id: ObjectId("507f1f77bcf86cd799439011"), // 12-byte unique ID
name: "John Doe", // String
age: 35, // Integer
address: { // Embedded document
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "hiking","swimming"], // Array
graduated: true, // Boolean
birthday: ISODate("1980-05-15T00:00:00Z"), // Date
data: BinData(0, "SGVsbG8gV29ybGQ="), // Binary data
ts: Timestamp(1590583045633, 1) // Timestamp
}
Points clés à noter :
- Le champ
_id
identifie de manière unique le document - Les paires champ-valeur ont un ordre défini
- Prend en charge des types de données supplémentaires comme ISODate, ObjectId, etc.
- Peut intégrer des documents et des tableaux
- Données binaires stockées efficacement
Quelle est la différence entre JSON et BSON ?
Voici les principales différences entre JSON et BSON :
- Encodage : JSON est basé sur du texte et encodé en UTF-8, tandis que BSON est encodé en binaire.
- Types de données : JSON prend en charge des types de données limités comme les chaînes, les nombres, les booléens, les tableaux et les objets. BSON prend en charge des types supplémentaires comme les dates, les données binaires, les expressions régulières, etc.
- Efficacité : L'encodage binaire BSON permet un stockage et une recherche de données plus efficaces par rapport à JSON. Les documents BSON ont un préfixe de longueur et ne contiennent aucun espace blanc afin qu'ils puissent être analysés plus rapidement.
- Ordre : Les paires champ-valeur dans les documents BSON sont ordonnées, ce qui permet une traversée et une indexation efficaces. Les objets JSON n'ont aucune garantie d'ordre.
- Flexibilité : BSON offre une certaine flexibilité par rapport à JSON, comme le fait d'autoriser les noms de champs à contenir des caractères spéciaux et Unicode.
- Utilisation : JSON est un format général utilisé largement sur le Web et dans les applications. BSON est utilisé spécifiquement dans les bases de données MongoDB comme principale représentation des données.
- Schéma : JSON est sans schéma par défaut tandis que MongoDB permet d'appliquer des schémas pour les documents BSON via des règles de validation.
- Valeurs nulles : JSON a une seule valeur nulle. BSON distingue les champs nuls et manquants.
Conversion JSON et BSON dans MongoDB avec Apidog
Apidog est une boîte à outils API qui simplifie le développement d'API. Il propose MongoDB comme l'un de ses choix de bases de données intégrées. En utilisant MongoDB avec Apidog, vous pouvez stocker des maquettes et des tests d'API dans MongoDB en tant que backend.
Les réponses d'API simulées fournies par Apidog peuvent être pilotées par des données stockées dans une base de données MongoDB. Cela permet à Apidog d'utiliser MongoDB comme source de données persistante pour les API simulées. Ensuite, nous allons vous expliquer la relation entre JSON et BSON.
MongoDB stocke les données sous forme de documents BSON, qui peuvent être considérés comme un sur-ensemble de JSON. Lors de l'utilisation de la base de données MongoDB avec Apidog, JSON est utilisé pour composer le contenu. Apidog mappera automatiquement chaque champ vers le type de données BSON correspondant en fonction du contenu JSON réel.
Un cas particulier est le champ _id
. Selon les conventions MongoDB, chaque document doit avoir un champ _id
comme clé primaire, avec ObjectId
comme type de données par défaut au lieu de string
.
Avec Apidog, pour déclarer un champ _id
de type ObjectId
, utilisez le format de chaîne normal. Si le contenu de la chaîne est conforme au format ObjectId
, Apidog le mappera automatiquement vers le type ObjectId
de BSON.
Par exemple, dans MongoDb, il existe un document BSON comme :
Copy code
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
Ensuite, pour interroger ce document par _id
avec Apidog, le JSON à insérer dans la "Condition de requête" serait :
Copy code
{
"_id": "654e056de3662b1c09477cc3"
}
