
# WDI-PANTHALASSA
---
Title: Vampires - Raw Mongo Queries
Type: Homework
Duration: single night
Adapted by: Thom Page
Course: WDIr-Panthalassa
---
# Vampires!

### Setup
1. Start `mongod`
2. Open your mongo console with `mongo`. Note: This homework is done in the terminal, there is no Express.
3. Connect to a new database called `monsters` with `use monsters`
4. Using the js objects of vampires in `populateVampires.js`, add the vampires to a `vampires` collection. Hint: you can use the **Adding Losts of New Documents** syntax from the example at the bottom of this document.
### Resources
#### Utilize the following resources to research the commands you will need
[https://docs.mongodb.org/manual/reference/operator/query/#query-selectors]
[http://mongoosejs.com/]
## MONGO SELECTION COMMANDS
For the following parts, write mongo queries in your CLI, and when you figure out the right answer, copy the correct mongo queries into a `selectVampires.md` file in your homework folder.
### Part 1
#### Select by comparison
Select all the vampires that:
- have greater than 500 victims
- have fewer than or equal to 150 victims
- have a victim count is not equal to 210234
- have greater than 150 AND fewer than 500 victims
** Commit your work.**
The commit message should read:
"Commit 1: Select by comparison".
### Part 2
#### Select by exists or does not exist
Select all the vampires that:
- have a title property
- do not have a victims property
- have a title AND no victims
- have victims AND the victims they have are greater than 1000
** Commit your work.**
The commit message should read:
"Commit 2: Select by exists".
### Part 3
#### Select objects that match one of several values
Select all the vampires that:
- love either `frilly shirtsleeves` or `frilly collars`
- love `brooding`
- love at least one of the following: `appearing innocent`, `trickery`, `lurking in rotting mansions`, `R&B music`
- love `fancy cloaks` but not if they also love either `top hats` or `virgin blood`
\* *Hint-You will also have to use $nin* \*
** Commit your work.**
The commit message should read:
"Commit 3: Select matching objects".
### Part 4
#### Select with OR
Select all the vampires that:
- are from `New York, New York, US` or `New Orleans, Louisiana, US`
- love `brooding` or `being tragic`
- have more than 1000 victims or love `marshmallows`
- have red hair or green eyes
** Commit your work.**
The commit message should read:
"Commit 4: Select with OR".
### Part 5
#### Negative Selection
Select all vampires that:
- love `ribbons` but do not have blonde hair
- are not from Rome
- do not love any of the following:
[`fancy cloaks`, `frilly shirtsleeves`, `appearing innocent`, `being tragic`, `brooding`]
- have not killed more than 200 people
** Commit your work.**
The commit message should read:
"Commit 5: Negative selection".
### Part 6
#### Replacing a record
Replace the following:
- replace the vampire called 'Claudia' with a vampire called 'Eve'. 'Eve' will have a key called 'portrayed_by' with the value 'Tilda Swinton'
- replace the first male vampire with another whose name is 'Guy Man', and who has a key 'is_actually' with the value 'were-lizard'
** Commit your work.**
The commit message should read:
"Commit 6: Replacing a record".
### Part 7
#### Update single values
Update the following:
- Update 'Guy Man' to have a gender of 'm'
- Update 'Eve' to have a gender of 'f'
- Update 'Guy Man' to have an array called 'hates' that includes 'clothes' and 'jobs'
- Update 'Guy Man's' hates array also to include 'alarm clocks' and 'jackalopes'
- Rename 'Eve's' name field to 'moniker'
** Commit your work.**
The commit message should read:
"Commit 7: Replacing a record".
### Part 8
#### Remove documents
https://docs.mongodb.org/manual/tutorial/remove-documents/
- Remove a single document wherein the hair_color is 'brown'
- Remove all documents wheren the eye-color is 'green'
** Commit your work.**
The commit message should read:
"Commit 8: Remove documents".
#### Adding Lots of New Documents in plain Mongo
Pretend we have a collection called `people` and want to add lots of documents, we can simply provide this __array__ to the _insert_ method and it will create a document for each object in the array.
```
[
{
"name": "Emma",
"age": 20
},
{
"name": "Ray",
"age": 45
},
{
"name": "Celeste",
"age": 33
},
{
"name": "Stacy",
"age": 53
},
{
"name": "Katie",
"age": 12
},
{
"name": "Adrian",
"age": 47
}
]
```
> Note: Be sure to type the closing parenthesis of the _insert_ method!
`db.people.insert([array])`