| Description |
Related data is stored within a single document as an array or subdocument. |
Related data is stored in separate collections, with IDs linking documents. |
A separate collection stores relationships, often with additional metadata. |
| Example |
```javascript:disable-run |
|
|
| Pros |
- Fast reads (single query). - Simple for small, static data. - No joins needed. |
- Avoids data duplication. - Easier to update large or frequently changing data. - Flexible for independent queries. |
- Supports relationship metadata (e.g., role, timestamps). - Avoids duplication. - Allows independent relationship queries. |
| Cons |
- Data duplication if related data is repeated. - Updates are complex if related data changes. - Limited by 16MB document size. |
- Requires multiple queries or $lookup (slower). - Maintaining consistency across collections is harder. |
- More storage overhead. - Complex queries (multiple collections or $lookup). - Requires careful consistency management. |