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
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 |