Week 12 notes completed
This commit is contained in:
@ -0,0 +1,78 @@
|
||||
# Document databases and MongoDB
|
||||
This is a middleground between key-value DB's and RDB's.
|
||||
|
||||
* Documents structres:
|
||||
* less strict
|
||||
* nested
|
||||
* repeated
|
||||
* order-sensitive
|
||||
|
||||
* Less interlinking - When we treat the documents as a database, any link between documents is not relevant for retrieval, at first.
|
||||
* ... or linking less importan for retrieval.
|
||||
|
||||
### Document formats
|
||||
* Markup languages for text
|
||||
* Markup languages for other data
|
||||
* Bespoke formats
|
||||
* JSON (JavaScript Object Notation)
|
||||
|
||||
### JSON differences
|
||||
* Simple expresison of standar data structures
|
||||
* Useful for:
|
||||
* Data persistence (serialization)
|
||||
* Data exchange
|
||||
|
||||
* Very similar to JavaScript:
|
||||
* Data types are similar (number, string, decimal)
|
||||
* We can't name variables and reuse them
|
||||
* In JSON, keys require quotes, in JS it's optional
|
||||
* No named structure/cross reference
|
||||
* Object keys take quotes in JSON
|
||||
|
||||
## MongoDB
|
||||
* Document-oriented model
|
||||
* Distributed (by sharding, horizontal partitions)
|
||||
* Open-ish Source... (copyleft)
|
||||
* Operates on objects
|
||||
e.g.
|
||||
```JS
|
||||
movieData = [{title: "Ant-Man", year: 2015, actors: ["John", "Bob"]},
|
||||
{title: "..."}]
|
||||
```
|
||||
It's not a prescribed structure, but it's ok with MongoDB
|
||||
|
||||
### MongoDB: INSERT
|
||||
`db.movies.insert(movieData)`
|
||||
|
||||
### MongoDB: SELECT
|
||||
`db.movies.find({year: 2015});`
|
||||
|
||||
`db.movies.find({title: /*Man/});`
|
||||
|
||||
`db.movies.find({title: /*Man/, year:{$lt: 2010}});` less than 2010
|
||||
|
||||
### MongoDB UPDATE
|
||||
`db.movies.update(
|
||||
{title: "Ant-Man"}, <- find
|
||||
{$set: {year: 2015}} <- update
|
||||
);`
|
||||
|
||||
Or update many entries
|
||||
|
||||
`db.movies.updateMany(
|
||||
{actors: "Elvis Presley"},
|
||||
{"actors.$": "Elvos Proslee"}
|
||||
);`
|
||||
|
||||
Add an actor:
|
||||
|
||||
`db.movies.update(
|
||||
{title: "Ant-Man"},
|
||||
{$push: {actors: "Michael John"}}
|
||||
);`
|
||||
|
||||
### MongoDB
|
||||
* Fairly SQL-like
|
||||
* Reduces joins in treelike data
|
||||
* Integrates well into code
|
||||
* Has suffered security and reliability issues
|
||||
Reference in New Issue
Block a user