M101J: MONGODB FOR JAVA DEVELOPERS
ABOUT THIS COURSE
Learn everything you need to know to get started building a MongoDB-based app. This course will go over basic installation, JSON, schema design, querying, insertion of data, indexing and working with the Java driver. In the course, you will build a blogging platform, backed by MongoDB.
Details
- Duration: 7 weeks
- Each week we release new video lectures and exercises.
- Each week requires approximately 3-5 hours of your time, depending on your level of preparation.
- Your final grade for the course will be comprised of weekly assignments which count for half of your grade and a final exam/project which counts for the other half of your grade.
- You will receive a course completion confirmation at the end of the course if you achieve a 65% or above on graded material.
Objective
After completing this course, you should have a good understanding as to how applications are built on top of MongoDB using Java. This course should also prepare you to take the C100DEV: MongoDB Certified Developer, Associate Level exam. Register for next exam session to become a MongoDB Certified Professional.
Prerequisites
To take this course you should be familiar with Java. Knowledge of relational databases is not required.
Goal Accomplishment Criteria
Mongo certificate
Personal resources
time
-
Week 1: Introduction and Overview
-
Welcome to M101J
-
What is MongoDB?
-
MongoDB Relative to Relational
-
Overview of Building an App with MongoDB
-
Quick Introduction to the Mongo Shell
-
Introduction to JSON
-
System Requirements
-
Installing MongoDB (mac)
-
Installing MongoDB (windows)
-
Installing and Using Maven
-
Intro to the Spark Web Application Framework
-
Intro to the Freemarker Templating Engine
-
Spark and Freemarker Together
-
Spark: Handling GET requests
-
Spark: Handling POST requests
-
MongoDB is Schemaless
-
JSON Revisited
-
JSON Subdocuments
-
JSON Spec
-
Introduction to Our Class Project, The Blog
-
Blog in Relational Tables
-
Blog in Documents
-
Introduction to Schema Design
-
Homework 1.1
-
Homework 1.2
-
Homework 1.3
-
-
Week 2: Creating, Reading and Updating Data (CRUD)
-
Introduction to Week 2
-
CRUD and the Mongo Shell
-
Secrets of the Mongo Shell
-
BSON Introduced
-
Inserting Docs
-
Introduction to findOne
-
Introduction to find
-
Querying Using field Selection
-
Querying Using $gt and $lt
-
Inequalities on Strings
-
Using regexes, $exists, $type
-
Using $or
-
Using $and
-
Querying Inside Arrays
-
Using $in and $all
-
Queries with Dot Notation
-
Querying, Cursors
-
Counting Results
-
Wholesale Updating of a Document
-
Using the $set Command
-
Using the $unset Command
-
Using $push, $pop, $pull, $pullAll, $addToSet
-
Upserts
-
Multi-update
-
Removing Data
-
The MongoDB Java Driver
-
Java Driver: Representing Documents
-
Java Driver: Insert
-
Java Driver: Find, FindOne, and Count
-
Java Driver: Querying with a filter
-
Java Driver: Querying with a Projection
-
Java Driver: Querying with Sort, Skip and Limit
-
Java Driver: Update and Replace
-
Java Driver: Delete
-
All Together Now: MongoDB, Spark and Freemarker
-
Blog, Internals
-
Blog, Session Management
-
Blog, User Interface
-
Using MongoProc
-
Homework 2.1
-
Homework 2.2
-
Homework 2.3
-
Homework 2.4 (MongoProc)
-
-
Week 3: Schema Design
-
Introduction to Week 3
-
MongoDB Schema Design
-
Relational Normalization
-
Mongo Design for Blog
-
Alternative Schema for Blog
-
Living Without Constraints
-
Living Without Transactions
-
One to One Relations
-
One to Many Relations
-
Many to Many Relations
-
Multikeys
-
Benefits of Embedding
-
Trees
-
When to Denormalize
-
What is an ODM?
-
Field mappings, indexes and constraints in Morphia
-
CRUD Operations in Morphia
-
Homework 3.1
-
Homework 3.2 (MongoProc)
-
Homework 3.3 (MongoProc)
-
-
Week 4: Performance
-
Introduction to Week 4
-
Storage Engines: Introduction
-
Storage Engines: MMAPv1
-
Storage Engines: WiredTiger
-
Indexes
-
Creating Indexes
-
Discovering (and Deleting) Indexes
-
Multikey Indexes
-
Dot Notation and Multikey
-
Index Creation Option, Unique
-
Index Creation, Sparse
-
Index Creation, Background
-
Using Explain
-
Explain: Verbosity
-
Covered Queries
-
When is an Index Used?
-
How Large is Your Index?
-
Number of Index Entries
-
Geospatial Indexes
-
Geospatial Spherical
-
Text Indexes
-
Efficiency of Index Use
-
Efficiency of Index Use Example
-
Logging Slow Queries
-
Profiling
-
Mongostat
-
Mongotop
-
Sharding Overview
-
Homework 4.1
-
Homework 4.2
-
Homework 4.3 (MongoProc)
-
Homework 4.4
-
-
Week 5: Aggregation Framework
-
Introduction to Week 5
-
Simple Aggregation Example
-
The Aggregation Pipeline
-
Simple Example Expanded
-
Compound Grouping
-
Using a document for _id
-
Aggregation Expressions
-
Using $sum
-
Using $avg
-
Using $addToSet
-
Using $push
-
Using $max and $min
-
Double $group stages
-
Using $project
-
Using $match
-
Using $sort
-
Using $limit and $skip
-
Revisiting $first and $last
-
Using $unwind
-
$unwind example
-
Double $unwind
-
Mapping between SQL and Aggregation
-
Some Common SQL examples
-
Limitations of the Aggregation Framework
-
Aggregation Framework with the Java Driver
-
Homework 5.1 (Hands On)
-
Homework 5.2 (Hands On)
-
Homework 5.3 (Hands On)
-
Homework 5.4
-
-
Exam
-
Question 1
-
Question 2
-
Question 3
-
Question 4
-
Question 5
-
Question 6
-
Question 7
-
Question 8
-
Question 9
-
Question 10
-
-
Week 6: Application Engineering
-
Introduction to Week 6
-
Write Concern
-
Network Errors
-
Introduction to Replication
-
Replica Set Elections
-
Write Consistency
-
Creating a Replica Set
-
Replica Set Internals
-
Failover and Rollback
-
Connecting to a Replica Set from the Java Driver
-
When Bad Things Happen to Good Nodes
-
Write Concern Revisited
-
Read Preferences
-
Review of Implications of Replication
-
Introduction to Sharding
-
Building a Sharded Environment
-
Implications of Sharding
-
Sharding + Replication
-
Choosing a Shard Key
-
Homework 6.1
-
Homework 6.2
-
Homework 6.3
-
Homework 6.4
-
Homework 6.5 (MongoProc)
-
-
Week 7: Case Studies
-
Introduction to Week 7
-
Interview with Charity Majors, Parse
-
Interview with Ryan Bubinski, Codecademy
-
- 8060
- 06 October 2015, 20:41
Don't miss new posts!
Subscribe for the Goal and follow through to its completion