Skip to main content

Mongo - Data Modeling

Lesson Objectives

  1. Explain how to relate documents using foreign keys
  2. Explain how to use Arrays
  3. Explain how to use Embedded Documents
  4. 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")})
  2. 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