 
      MongoDB is a document database with the scalability and flexibility.
MongoDB stores data in flexible, JSON-like documents, meaning fields can vary from document to document and data structure can be changed over time.
MongoDB is a distributed database at its core.
Tools: MongoDB shell (CLI), MongoDBCompass (GUI)
| Actions | Codes | 
|---|---|
| Show All Databases | show dbs | 
| Show Current Database | db | 
| Create Or Switch Database | use dbname | 
| Drop Database | db.dropDatabase() | 
| show collections | Show Collections | 
| Insert Row | db.posts.insert({ title: 'Post One', body: 'Body of post one', category: 'News', tags: ['news', 'events'], user: { name: 'Jim Cooks', status: 'author' }, date: Date() }) | 
| Get All Rows | db.posts.find() | 
| Get All Rows Formatted | db.find().pretty() | 
| Count Rows | db.posts.find().count() db.posts.find({ category: 'news' }).count() | 
| Sort Rows | # asc db.posts.find().sort({ title: 1 }).pretty() # desc db.posts.find().sort({ title: -1 }).pretty() | 
| Limit Rows | db.posts.find().limit(2).pretty() | 
| Chaining | db.posts.find().limit(2).sort({ title: 1 }).pretty() | 
| Foreach | db.posts.find().forEach(function(doc) { print("Blog Post: " + doc.title) }) | 
| Update Row | db.posts.update({ title: 'Post Two' }, { title: 'Post Two', body: 'New body for post 2', date: Date() }, { upsert: true }) | 
| Update Specific Field | db.posts.update({ title: 'Post Two' }, { $set: { body: 'Body for post 2', category: 'Technology' } }) | 
| Increment Field | db.posts.update({ title: 'Post Two' }, { $inc: { likes: 5 } }) | 
| Delete Row | db.posts.remove({ title: 'Post Four' }) | 
| Sub-Documents | db.posts.update({ title: 'Post One' }, { $set: { comments: [ { body: 'Comment One', user: 'Mary Williams', date: Date() }, { body: 'Comment Two', user: 'Harry White', date: Date() } ] } }) | 
| Find By Element in Array | db.posts.find({ comments: { $elemMatch: { user: 'Mary Williams' } } } ) | 
| Add Index | db.posts.createIndex({ title: 'text' }) | 
| Text Search | db.posts.find({ $text: { $search: "\"Post O\"" } }) | 
| Greater & Less Than | db.posts.find({ views: { $gt: 2 } }) db.posts.find({ views: { $gte: 7 } }) db.posts.find({ views: { $lt: 7 } }) db.posts.find({ views: { $lte: 7 } }) |