<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1" -->

---
title: Learning Discriminators in Mongoose | daily.dev
description: Mongoose discriminators let you store documents with different schemas in a single MongoDB collection by defining sub-schemas under a shared root schema....
canonical: https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Learning Discriminators in Mongoose | daily.dev
og:description: Mongoose discriminators let you store documents with different schemas in a single MongoDB collection by defining sub-schemas under a shared root schema....
og:url: https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1
og:image: https://api.daily.dev/og/posts/02dPdwsC1.png
og:image:alt: Learning Discriminators in Mongoose
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Learning Discriminators in Mongoose

**[Medium](https://daily.dev/sources/medium_js)** · 7 min read · 0 upvotes · 0 comments

## Summary

Mongoose discriminators let you store documents with different schemas in a single MongoDB collection by defining sub-schemas under a shared root schema. Without discriminators, you end up with one bloated schema full of optional fields, no real validation boundaries, and no per-type model convenience. With discriminators, each variant (e.g. Employee, Manager) gets its own focused schema while inheriting shared fields from the root. Mongoose handles the implementation via schema merging and automatic query filter injection using a discriminator key field (default `__t`, or a custom name like `accountType`). This enables querying the full collection via the root model or filtering by subtype via discriminator models, all pointing to the same underlying collection.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@aryaney0704/learning-discriminators-in-mongoose-3135f8e8c5b2>

## Similar posts on daily.dev

- [Rethinking Data Integrity: Why Domain-Driven Design Is Crucial](https://daily.dev/posts/rethinking-data-integrity-why-domain-driven-design-is-crucial-hlcn41tjb) · The New Stack · 3 upvotes · 0 comments
- [DumboDB: Announcing Validator Support](https://daily.dev/posts/dumbodb-announcing-validator-support-pxoap3acs) · DoltHub Blog · 12 upvotes · 0 comments
- [Using MongoDB with Mongoose in Nuxt](https://daily.dev/posts/using-mongodb-with-mongoose-in-nuxt-3kpry02lt) · Telerik · 0 upvotes · 0 comments
- [Stop fighting forms: The schema-driven approach to validation](https://daily.dev/posts/stop-fighting-forms-the-schema-driven-approach-to-validation-8vq511w0o) · LogRocket · 1 upvotes · 0 comments
- [Parse, Don't Validate — In a Language That Doesn't Want You To](https://daily.dev/posts/parse-don-t-validate-in-a-language-that-doesn-t-want-you-to-zyfa03chk) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#mongodb](https://daily.dev/tags/mongodb), [#mongoose](https://daily.dev/tags/mongoose)

[View this post on daily.dev](https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Learning Discriminators in Mongoose","url":"https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1"},"datePublished":"2026-07-23T20:08:33.611Z","dateModified":"2026-07-23T20:10:49.206Z","description":"Mongoose discriminators let you store documents with different schemas in a single MongoDB collection by defining sub-schemas under a shared root schema....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7b65526ec5c393bffb410367dea2fcf9?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7b65526ec5c393bffb410367dea2fcf9?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/learning-discriminators-in-mongoose-02dpdwsc1","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,mongodb,mongoose","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Learning Discriminators in Mongoose"}]}
```

