1.8 KiB
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.
It's not a prescribed structure, but it's ok with MongoDB
movieData = [{title: "Ant-Man", year: 2015, actors: ["John", "Bob"]}, {title: "..."}]
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