Skip to content

Commit

Permalink
Merge pull request #246 from el-abdel/master
Browse files Browse the repository at this point in the history
Added mongoDB cheatSheet
  • Loading branch information
LeCoupa authored Dec 18, 2021
2 parents 94a3376 + 1b6b599 commit 13b8d8b
Showing 1 changed file with 225 additions and 0 deletions.
225 changes: 225 additions & 0 deletions databases/mongodb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
# *****************************************************************************
# BASICS
# *****************************************************************************

# Connect MongoDB Shell
mongo # connects to mongodb://127.0.0.1:27017 by default
mongo --host <host> --port <port> -u <user> -p <pwd> # omit the password if you want a prompt

# Show All Databases
show dbs


# Show Current Database
db


# Create Or Switch Database
use <database_name>


# Drop Database
db.dropDatabase()


# Create Collection
db.createCollection('posts')


# Show Collections
show collections


# *****************************************************************************
# CRUD
# *****************************************************************************

# Insert Row
db.posts.insert({
title: 'Post One',
body: 'Body of post one',
category: 'News',
tags: ['news', 'events'],
user: {
name: 'John Doe',
status: 'author'
},
date: Date()
})


# Insert Multiple Rows
db.posts.insertMany([
{
title: 'Post Two',
body: 'Body of post two',
category: 'Technology',
date: Date()
},
{
title: 'Post Three',
body: 'Body of post three',
category: 'News',
date: Date()
},
{
title: 'Post Four',
body: 'Body of post three',
category: 'Entertainment',
date: Date()
}
])


# Get All Rows
db.posts.find()


# Get All Rows Formatted
db.posts.find().pretty()


# Find One Row
db.posts.findOne({ category: 'News' })


# Find Rows
db.posts.find({ category: 'News' })


# Find Specific Fields
db.posts.find({ title: 'Post One' }, {
title: 1,
author: 1
})


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


# Delete Row
db.posts.remove({ title: 'Post Four' })


# *****************************************************************************
# OTHER FUNCTIONS
# *****************************************************************************

# Sort Rows
db.posts.find().sort({ title: 1 }).pretty() # asc
db.posts.find().sort({ title: -1 }).pretty() # desc


# Count Rows
db.posts.find().count()
db.posts.find({ category: 'news' }).count()


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


# Increment Field (\$inc)
db.posts.update({ title: 'Post Two' },
{
$inc: {
likes: 5
}
})


# Rename Field
db.posts.update({ title: 'Post Two' },
{
$rename: {
likes: 'views'
}
})


# 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 (\$elemMatch)
db.posts.find({
comments: {
$elemMatch: {
user: 'Mary Williams'
}
}
}
)


# Add Index
db.posts.createIndex({ title: 1 })


# Drop Index
db.posts.dropIndex("title_1")


# Hide/Unhide Indexes
db.posts.hideIndex("title_1")
db.posts.unhideIndex("title_1")


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

0 comments on commit 13b8d8b

Please sign in to comment.