MongoDB Academy · Leçon

Qu’est-ce qu’un document BSON ?

Vous lirez et écrirez des documents BSON dans le shell MongoDB, en reconnaissant des types de champs tels que les chaînes, les nombres, les tableaux et les objets imbriqués.

Leçon 1 sur 413 étapes

Qu’est-ce qu’un document BSON ? est une leçon MongoDB Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage MongoDB Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours MongoDB Academy comprend 4 leçons au total.

JSON et BSON : la différence essentielle

Vous écrivez les données MongoDB sous la forme familière de JSON, mais elles sont stockées en BSON — du JSON binaire. Ce format est plus rapide à parcourir et prend en charge des types plus riches, comme les dates et ObjectId.

La structure d’un document BSON

Un document BSON est simplement constitué de paires clé-valeur entre accolades, comme un objet JS. Chaque document a besoin d’un champ _id, et MongoDB en crée automatiquement un unique si vous n’en fournissez pas.

// A minimal MongoDB document
{
  _id: ObjectId('64a2f3b1c9e7e12345678901'),
  name: 'Alice',
  age: 30,
  active: true
}
// _id is auto-generated if omitted on insert
// ObjectId encodes the insert timestamp in its first 4 bytes

Champs chaîne, nombre et booléen

La plupart des champs ressemblent à ceux du JSON : chaînes, nombres, valeurs vrai/faux et null. Un conseil : pour les montants, utilisez Decimal128 afin d’éviter les erreurs d’arrondi en virgule flottante. Le code montre comment faire.

// Explicit BSON number types in mongosh
db.products.insertOne({
  name: 'Widget',
  quantity: NumberInt(100),       // 32-bit integer
  price: NumberDecimal('9.99'),   // Exact decimal for money
  weight: 0.45                    // Double (64-bit float)
});

Le type BSON Date

Date est un véritable type BSON, pas une chaîne de caractères. Vous pouvez ainsi trier les dates et effectuer efficacement des requêtes par intervalle. Ne stockez jamais les dates sous forme de texte brut : vous perdriez tous ces avantages.

// Always use BSON Date, not strings
db.events.insertOne({
  title: 'Conference',
  startDate: new Date('2024-09-01'),   // BSON Date
  endDate: ISODate('2024-09-03T18:00:00Z')
});

// Range query works perfectly on Date fields:
db.events.find({ startDate: { $gte: new Date('2024-01-01') } });

Documents imbriqués (sous-documents)

La valeur d’un champ peut être un document complet à part entière : c’est un document imbriqué. Une adresse trouve naturellement sa place dans un utilisateur, et vous pouvez l’interroger avec la notation par points.

// Nested sub-document example
{
  _id: ObjectId('...'),
  name: 'Bob',
  address: {
    street: '123 Main St',
    city: 'Chicago',
    state: 'IL',
    zip: '60601'
  },
  employer: {
    name: 'Acme Corp',
    since: ISODate('2020-03-01')
  }
}

// Query by nested field:
db.users.find({ 'address.city': 'Chicago' });

Tableaux dans les documents BSON

Les tableaux permettent à un champ de contenir une liste : des balises, des rôles ou même des sous-documents. MongoDB peut indexer chaque élément, de sorte que la vérification « cet élément contient-il X ? » reste rapide.

// Document with arrays of primitives and sub-documents
{
  _id: ObjectId('...'),
  productName: 'Smart TV',
  tags: ['electronics', '4K', 'HDR'],
  reviews: [
    { user: 'alice', rating: 5, comment: 'Love it!' },
    { user: 'bob',   rating: 4, comment: 'Good value.' }
  ]
}

// Query: documents where tags array contains '4K'
db.products.find({ tags: '4K' });

Données binaires et ObjectId

BSON stocke également des données Binary brutes ainsi que le type spécial ObjectId. Astuce intéressante : un ObjectId dissimule son heure de création dans ses premiers octets ; le champ _id est donc approximativement trié selon l’ordre d’insertion.

// Extracting timestamp from ObjectId in mongosh
const id = ObjectId('64a2f3b1c9e7e12345678901');
console.log(id.getTimestamp());
// ISODate('2023-07-03T10:15:29.000Z')

// The first 8 hex chars = 4-byte timestamp
// 64a2f3b1 = Unix epoch seconds => 2023-07-03

Limite de taille d’un document : 16 MB

Chaque document est limité à 16 MB — une taille considérable pour la plupart des données, qui vous encourage aussi à bien les modéliser. Pour les fichiers plus volumineux, comme les vidéos, utilisez GridFS, qui les divise en blocs.

// GridFS upload example (Node.js driver)
const { GridFSBucket } = require('mongodb');
const bucket = new GridFSBucket(db, { bucketName: 'uploads' });

const uploadStream = bucket.openUploadStream('photo.jpg');
fs.createReadStream('/tmp/photo.jpg').pipe(uploadStream);
uploadStream.on('finish', () => console.log('Uploaded:', uploadStream.id));

Le schéma flexible en pratique

MongoDB n’impose pas de schéma : deux documents d’une même collection peuvent donc contenir des champs différents. Ce schéma flexible est très utile au début d’un développement rapide.

// Two documents in the same collection with different shapes
// This is perfectly valid in MongoDB

// User with social login
{ _id: ObjectId('...'), name: 'Alice', googleId: 'g_12345', createdAt: new Date() }

// User with email/password
{ _id: ObjectId('...'), name: 'Bob', email: 'bob@test.com', passwordHash: 'bcrypt...', createdAt: new Date() }

Lire du BSON dans mongosh

L’interpréteur mongosh utilise une syntaxe semblable à celle de JavaScript. Insérez un document et il l’enregistre en BSON ; lancez une requête et il affiche un résultat clair et lisible, avec des assistants comme ObjectId et ISODate.

// mongosh: insert and read back
db.items.insertOne({ name: 'Chair', price: NumberDecimal('199.99'), createdAt: new Date() });

db.items.findOne({ name: 'Chair' });
// Output:
// {
//   _id: ObjectId('64a2f3b1...'),
//   name: 'Chair',
//   price: Decimal128('199.99'),
//   createdAt: ISODate('2024-01-15T10:23:00.000Z')
// }

Sérialisation BSON dans Node.js

Avec le pilote Node.js, utilisez simplement des objets JS ordinaires : il s’occupe pour vous de la conversion BSON. Vous n’avez jamais besoin de construire des données binaires manuellement ; les nombres et les dates fonctionnent directement.

const { ObjectId, Decimal128 } = require('mongodb');

// JS object -> BSON automatically by the driver
const doc = {
  _id: new ObjectId(),           // BSON ObjectId
  name: 'Widget',                // BSON String
  price: Decimal128.fromString('19.99'),  // BSON Decimal128
  stock: 100,                    // BSON Double (JS default)
  createdAt: new Date(),         // BSON Date
  tags: ['sale', 'new']          // BSON Array
};
await db.collection('products').insertOne(doc);

Vérification rapide

Testez votre compréhension des concepts de MongoDB et des bases de données NoSQL présentés dans cette leçon.

Récapitulatif de la leçon

Vous avez appris que BSON étend JSON avec des types plus riches, que les documents peuvent contenir des sous-documents et des tableaux et que le schéma est flexible. Ensuite : collections et tables SQL comparées.

Gratuit pour commencer

Apprends JavaScript avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Qu’est-ce qu’un document BSON ? » est-elle gratuite ?

Oui — le texte complet de « Qu’est-ce qu’un document BSON ? » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours MongoDB Academy, passe à CoddyKit PRO. Le cours MongoDB Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Qu’est-ce qu’un document BSON ? » ?

Vous lirez et écrirez des documents BSON dans le shell MongoDB, en reconnaissant des types de champs tels que les chaînes, les nombres, les tableaux et les objets imbriqués. Tu pratiques MongoDB Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer MongoDB Academy ?

Aucune expérience préalable n'est requise. MongoDB Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Qu’est-ce qu’un document BSON ? » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon MongoDB Academy ?

Oui. Chaque leçon MongoDB Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Qu’est-ce qu’un document BSON ?
  2. Collections et tables SQL
  3. Bases de données, collections et espaces de noms
  4. Les fondamentaux du shell mongosh
← Retour à MongoDB Academy