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