Discriminators¶
Discriminators provide a schema inheritance mechanism. They enable you to have multiple models with overlapping schemas store documents in the same MongoDB collection.
Defining Discriminators¶
You can use MergeSchemas or a base schema to create discriminators.
baseEventSchema := goose.NewSchema()
baseEventSchema.AddField("timestamp", goose.TypeDate)
// Discriminator Model
clickEventSchema := goose.NewSchema()
clickEventSchema.Merge(baseEventSchema)
clickEventSchema.AddField("url", goose.TypeString)
model := goose.NewModel("Event", baseEventSchema)
clickModel := model.Discriminator("Click", clickEventSchema)
Discriminator Key
Goose will add a discriminator key (e.g., __t) to your documents to keep track of the specific model type.