You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.5 KiB

# 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