# Mongo - Data Modeling ## Lesson Objectives 1. Explain how to relate documents using foreign keys 1. Explain how to use Arrays 1. Explain how to use Embedded Documents 1. Explain what denormalization is and when to use it ## Explain how to relate documents using foreign keys ``` db.employees.insert({_id: ObjectId( "4d85c7039ab0fd70a117d730"), name: 'Leto'}); db.employees.insert({_id: ObjectId( "4d85c7039ab0fd70a117d731"), name: 'Duncan', manager: ObjectId( "4d85c7039ab0fd70a117d730")}); db.employees.insert({_id: ObjectId( "4d85c7039ab0fd70a117d732"), name: 'Moneo', manager: ObjectId( "4d85c7039ab0fd70a117d730")}); ``` 1. to find: `db.employees.find({manager: ObjectId( "4d85c7039ab0fd70a117d730")})` ## Explain how to use Arrays ``` db.employees.insert({ _id: ObjectId( "4d85c7039ab0fd70a117d733"), name: 'Siona', manager: [ ObjectId( "4d85c7039ab0fd70a117d730"), ObjectId( "4d85c7039ab0fd70a117d732")] }) ``` 1. to find: `db.employees.find({manager: ObjectId( "4d85c7039ab0fd70a117d730")})` 1. index uses dot notation - `db.employees.find({ 'manager.0': ObjectId("4d85c7039ab0fd70a117d730")})` ## Explain how to use Embedded Documents ``` db.employees.insert({ _id: ObjectId( "4d85c7039ab0fd70a117d734"), name: 'Ghanima', family: { mother: 'Chani', father: 'Paul', brother: ObjectId( "4d85c7039ab0fd70a117d730")}}) ``` 1. can be queried using dot notation - `db.employees.find({ 'family.mother': 'Chani'})` ## Explain what denormalization is and when to use it