# MongoDB Cheat Sheet ## Open MongoDB in cmd (For windows) ``` mongo ``` > If `mongo` is not recognized as an internal or external command, operable program or batch file, then do the followings from [this blog](https://dangphongvanthanh.wordpress.com/2017/06/12/add-mongos-bin-folder-to-the-path-environment-variable/) ## Show All Databases ``` show dbs ``` ## Show Current Database ``` db ``` ## Create Or Switch Database ``` use acme ``` ## Drop Database🔴 ``` > use mydb > db.dropDatabase() ``` ## Create Collection ``` db.createCollection('posts') ``` ## Show Collections ``` show collections ``` ## Drop Collection 🔴 ``` > use mydb > db.usersCollection.drop() ``` ## 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 from a collection ``` db.posts.find() ``` ## Get All Rows from a collection Formatted ``` db.posts.find().pretty() ``` ## Find Rows ``` db.posts.find({ category: 'News' }) ``` ## Sort Rows in a collection ``` # asc db.posts.find().sort({ title: 1 }).pretty() # desc db.posts.find().sort({ title: -1 }).pretty() ``` ## Count Rows in a collection ``` db.posts.find().count() db.posts.find({ category: 'news' }).count() ``` ## Limit Rows in a collection ``` db.posts.find().limit(2).pretty() ``` ## Chaining example ``` db.posts.find().limit(2).sort({ title: 1 }).pretty() ``` ## Foreach ``` db.posts.find().forEach(function(doc) { print("Blog Post: " + doc.title) }) ``` ## Find One Row ``` db.posts.findOne({ 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' } }) ``` ## Increment Field (\$inc) ``` db.posts.update({ title: 'Post Two' }, { $inc: { likes: 5 } }) ``` ## Rename Field ``` db.posts.update({ title: 'Post Two' }, { $rename: { likes: 'views' } }) ``` ## Delete specific document from a collection ``` 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 (\$elemMatch) ``` 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 } }) ``` ## Get database size and index size in MB (Megabytes) ``` db.stats(1024*1024); ``` ## Export a collection in json format ``` mongoexport --db newdb -c usersCollection --out testBakcup.json ``` ## Import a collection from json file ``` mongoimport --db newdb -c usersCollectiontwo --file test.json ``` ## Export entire database including all collections (Local) ``` mongodump --db newdb ``` ## Export entire database including all collections (Cluster) ``` mongodump --uri="mongodb+srv://:@cluster0-pk6qf.mongodb.net/?retryWrites=true&w=majority" ``` [ref1](https://docs.mongodb.com/database-tools/mongodump/#connect-to-a-mongodb-instance) > use `--collection ` for only specific collection ## Import entire database including all collections ``` mongorestore --db deleteme dump/newdb ``` > **newdb** is the folder name that holds the database (deleteme) related files (.bson) etc. > To override same document with `_id` use [this](https://stackoverflow.com/a/32575607/11609006) method ## Connect to cloud mongodb cluster from mongo shell ``` mongo "mongodb+srv://cluster0.g1re8.mongodb.net/" --username ``` ## Useful resources - MongoDB Package Components (e.g. mongoimport, mongoexport, mongodump ) > https://docs.mongodb.com/manual/reference/program **Posted in** • [dev.to](https://dev.to/kamalhossain/mongodb-cheat-sheet-1p99) • [gist.github.com](https://gist.github.com/kamal-hossain/20845cd86c9e5dfe8528424c6f43072e)