Embedded Discriminators

Mongoose 🔴 Senior

Définition

Variante des discriminators appliquée a un tableau de sous-documents plutôt qu'a une collection racine : elle permet de stocker plusieurs schémas différents dans le même tableau embarque d'un document, chacun identifie par sa propre clé de discrimination (__t).

Analogie

Comme une boite a outils unique qui accepte des compartiments de formes différentes, chacun étiqueté selon son contenu.

Exemple de code

const eventSchema = new Schema(
  { message: String }, { discriminatorKey: '__t' }
);
const batchSchema = new Schema({ events: [eventSchema] });
const eventsArray = batchSchema.path('events');

eventsArray.discriminator('Clicked', new Schema({ url: String }));
eventsArray.discriminator('Purchased', new Schema({ amount: Number }));

Cas d'usage

Modéliser un journal d'evenements hétérogènés (clic, achat, connexion) dans un seul tableau embarque.

Anti-pattern

Déclarer les hooks du schema après avoir créé le discriminator : ils ne s'appliqueront pas correctement.

Termes liés

#sgbd#interview#database#mongoose

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre