https://university.mongodb.com/courses/M102/about
- Concepts
- support for new hardware
- parallelism
- clustering
- scaling
- easier development
- complex data (unstructured & polymorphic)
- support for new hardware
- horizontal (vs vertical)
- subsystem failures are common
- complex communication within system
- scaling vs rich features
- we need to trade some features for scalability & speed (CAP)
- distributed joins
- complex distributed transactions
- we need to trade some features for scalability & speed (CAP)
- lack of joins impiles need for different (non-relational) data model
- documents = "some structure" (vs. key-value sotrage)
- Goals
- fast scanability
- datatypes
- Date
- BinData
- int/long (32/64 bit)
Compact representation (sometimes) as a bonus.
Types matter when quering data: .find({price:1.25})
vs .find({price:"1.25"})
- Advantages of dynamic schema
- polymorphic data (e.g. circles and rectangles in figure collection)
- agile/iterative development
- db migrations are sometimes easier
https://docs.mongodb.org/manual/reference/operator/query/
https://docs.mongodb.org/manual/reference/operator/update/
update({...}, {..}, {multi: false})