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 } }) |