| name | mongodb-schema-design |
| version | 2.1.0 |
| description | Master MongoDB schema design and data modeling patterns. Learn embedding vs referencing, relationships, normalization, and schema evolution. Use when designing databases, normalizing data, or optimizing queries. |
| sasmp_version | 1.3.0 |
| bonded_agent | 03-mongodb-data-modeling |
| bond_type | PRIMARY_BOND |
| capabilities | ["embedding-strategy","referencing-strategy","relationship-modeling","schema-patterns","evolution-planning"] |
| input_validation | {"required_context":["use_case_domain","access_patterns"],"optional_context":["data_volume_estimate","update_frequency","query_requirements"]} |
| output_format | {"schema_design":"object","collection_definitions":"array","relationship_diagram":"string","validation_rules":"object","evolution_strategy":"string"} |
| error_handling | {"common_errors":[{"code":"SCHEMA001","condition":"Unbounded array growth","recovery":"Use referencing instead of embedding for 1-to-many"},{"code":"SCHEMA002","condition":"Document exceeds 16MB","recovery":"Split document, use GridFS, or reference external data"},{"code":"SCHEMA003","condition":"Denormalization update anomaly","recovery":"Implement sync mechanism or reduce denormalization"}]} |
| prerequisites | {"mongodb_version":"4.0+","required_knowledge":["document-model","crud-operations"],"design_inputs":["List of access patterns","Expected data volumes"]} |
| testing | {"unit_test_template":"// Validate schema design\nconst doc = { /* sample document */ }\nconst validation = await db.command({\n collMod: 'collection',\n validator: jsonSchema\n})\nexpect(validation.ok).toBe(1)\n"} |
MongoDB Schema Design
Master data modeling and schema patterns.
Quick Start
One-to-One: Embedded
{
_id: ObjectId('...'),
name: 'John',
email: 'john@example.com',
address: {
street: '123 Main St',
city: 'New York',
zip: '10001'
}
}
One-to-Many: Embed Array
{
_id: ObjectId('...'),
name: 'John',
tags: ['mongodb', 'database', 'nosql'],
posts: [
{ _id: 1, title: 'Post 1', content: '...' },
{ _id: 2, title: 'Post 2', content: '...' }
]
}
One-to-Many: Reference
{
_id: ObjectId('user1'),
name: 'John',
email: 'john@example.com'
}
{
: (),
: (),
:
}