MongoDB cheat sheet

Here is a cheat sheet for
mongodb
Basic Idea
Database:
A container of collection.Collection
: Grouping of documents insida of a database. Similar tables in SQL.Document
: A record inside of a collection. Similar to row in SQL.Field
: A key value pair within a document. Similar to column in SQL.
Basic commands
mongosh
: A JavaScript shell for interacting with MongoDB instances. It provides a command-line interface (CLI) that allows you to connect to a MongoDB server.show dbs
: Shows all databases in the current MongoDB instance.use <dbname>
: Switch database provided by dbname.db
: Shows current database name.show collections
: Shows all collections.db.dropDatabase()
: Deletes the current database.exit
: Exits the mongosh session.
Create
insertOne
: Creates a document within the specified collection.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">insertOne</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Create a document with the name of Arafat into the users collection</span> |
insertMany
: Creates multiple documents within the specified collection.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">insertMany</span><span class="p">([{</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">John</span><span class="err">”</span> <span class="p">},</span> <span class="p">{</span> <span class="na">age</span><span class="p">:</span> <span class="err">“</span><span class="nx">Roy</span><span class="err">”</span> <span class="p">}])</span> <span class="c1">// Create two documents with the name John and Roy into the users collection</span> |
Read
find
: Get all documents.
1 2 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">()</span> |
find(<filterObject>)
: Find all documents based on the filter object
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Get all users with the name Arafat</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="err">“</span><span class="nx">address</span><span class="p">.</span><span class="nx">street</span><span class="err">”</span><span class="p">:</span> <span class="err">“</span><span class="mi">434</span> <span class="nx">Lund</span> <span class="nx">Sweden</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Get all users whose adress field has a street field with the value 434 Lund Sweden</span> |
find(<filterObject>, <selectObject>)
: Find all documents that match the filter object but only return the field specified in the select object
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">},</span> <span class="p">{</span> <span class="na">name</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="na">hobby</span><span class="p">:</span> <span class="mi">1</span> <span class="p">})</span> <span class="c1">// Get all users with the name Arafat but only return their name, hobby, and _id</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({},</span> <span class="p">{</span> <span class="na">hobby</span><span class="p">:</span> <span class="mi">0</span> <span class="p">})</span> <span class="c1">// Get all users and return all fields except for hobby</span> |
findOne
: Returns the first document that matches the filter object.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">findOne</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Get the first user with the name Arafat</span> |
countDocuments
: Returns the count of the documents that match the filter object.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">countDocuments</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Get the number of users with the name Arafat</span> |
Update
updateOne
: Updates the first document.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateOne</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Arafat</span><span class="dl">"</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$set</span><span class="p">:</span> <span class="p">{</span> <span class="na">name</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Theo</span><span class="dl">"</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Update the first user with a name of Arafat to the name of Theo</span> |
updateMany
: Updates multiple docments.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateMany</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">16</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$inc</span><span class="p">:</span> <span class="p">{</span> <span class="na">age</span><span class="p">:</span> <span class="mi">6</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Update all users with an age of 16 by adding 6 to their age</span> |
replaceOne
: Replace the first document. This
will completely overwrite the entire object and not just
update individual fields.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">replaceOne</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">12</span> <span class="p">},</span> <span class="p">{</span> <span class="na">age</span><span class="p">:</span> <span class="mi">13</span> <span class="p">})</span> <span class="c1">// Replace the first user with an age of 12 with an object that has the age of 13 as its only field</span> |
Delete
deleteOne
: Delete a single document from a collection.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">deleteOne</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Arafat</span><span class="dl">"</span> <span class="p">})</span> <span class="c1">// Delete the first user with an name of Arafat</span> |
deleteMany
: Delete multiple documents from a collection.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">deleteMany</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">26</span> <span class="p">})</span> <span class="c1">// Delete all users with an age of 26</span> |
Complex Filter Object
$eq
: equals.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$eq</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all the users with the name Arafat</span> |
$ne
: not equal to.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$ne</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with a name other than Kyle</span> |
$gt / $gte
: Greater than and greater than or eqal.
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="p">{</span> <span class="na">$gt</span><span class="p">:</span> <span class="mi">26</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with an age greater than 26</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="p">{</span> <span class="na">$gte</span><span class="p">:</span> <span class="mi">34</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with an age greater than or equal to 34</span> |
$lt / $lte
: Less than and less than or eqal.
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="p">{</span> <span class="na">$lt</span><span class="p">:</span> <span class="mi">26</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with an age less than 26</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="p">{</span> <span class="na">$lte</span><span class="p">:</span> <span class="mi">34</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with an age less than or equal to 34</span> |
$in
: Check if a value is one of many values.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$in</span><span class="p">:</span> <span class="p">[</span><span class="err">“</span><span class="nx">Roy</span><span class="err">”</span><span class="p">,</span> <span class="err">“</span><span class="nx">Leo</span><span class="err">”</span><span class="p">]</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users with a name of Roy or Leo</span> |
$nin
: Check if a value is none of many values.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$nin</span><span class="p">:</span> <span class="p">[</span><span class="err">“</span><span class="nx">Roy</span><span class="err">”</span><span class="p">,</span> <span class="err">“</span><span class="nx">Leo</span><span class="err">”</span><span class="p">]</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users that do not have the name Roy or Leo</span> |
$and
: Returns true if all expressions are true
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">$and</span><span class="p">:</span> <span class="p">[{</span> <span class="na">age</span><span class="p">:</span> <span class="mi">6</span> <span class="p">},</span> <span class="p">{</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}]</span> <span class="p">})</span> <span class="c1">// Get all users that have an age of 6 and the name Arafat</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">})</span> <span class="c1">// Alternative way to do same thing</span> |
$or
: returns true if any expression is true
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">$or</span><span class="p">:</span> <span class="p">[{</span> <span class="na">age</span><span class="p">:</span> <span class="mi">6</span> <span class="p">},</span> <span class="p">{</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}]</span> <span class="p">})</span> <span class="c1">// Get all users that have an age of 6 or the name Arafat</span> |
$not
: Negates the expression
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$not</span><span class="p">:</span> <span class="p">{</span> <span class="na">$eq</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}</span> <span class="p">}</span> <span class="p">})</span> <span class="nx">Get</span> <span class="nx">all</span> <span class="nx">users</span> <span class="kd">with</span> <span class="nx">a</span> <span class="nx">name</span> <span class="nx">other</span> <span class="nx">than</span> <span class="nx">Arafat</span> |
$exists
: Matches documents that have the specified field.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">name</span><span class="p">:</span> <span class="p">{</span> <span class="na">$exists</span><span class="p">:</span> <span class="kc">true</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Returns all users that have a name field</span> |
$expr
: performs an expression evaluation in the query.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">({</span> <span class="na">$expr</span><span class="p">:</span> <span class="p">{</span> <span class="na">$gt</span><span class="p">:</span> <span class="p">[</span><span class="err">“</span><span class="nx">$balance</span><span class="err">”</span><span class="p">,</span> <span class="err">“</span><span class="nx">$debt</span><span class="err">”</span><span class="p">]</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Get all users that have a balance that is greater than their debt</span> |
Complex Update Object
$set
: Updates only the fields passed to $set
.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateOne</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">12</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$set</span><span class="p">:</span> <span class="p">{</span> <span class="na">name</span><span class="p">:</span> <span class="err">“</span><span class="nx">Roy</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Update the name of the first user with the age of 12 to the value Roy</span> |
$inc
: Increments the value of a field by a specified amount.
1 2 3 4 5 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateOne</span><span class="p">({</span> <span class="na">debt</span><span class="p">:</span> <span class="mi">200</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$inc</span><span class="p">:</span> <span class="p">{</span> <span class="na">debt</span><span class="p">:</span> <span class="mi">100</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Add 100 to the debt of the first user with the debt of 200</span> <span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateOne</span><span class="p">({</span> <span class="na">debt</span><span class="p">:</span> <span class="mi">200</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$inc</span><span class="p">:</span> <span class="p">{</span> <span class="na">debt</span><span class="p">:</span> <span class="o">-</span><span class="mi">100</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Remove 100 from the debt of the first user with the debt of 200</span> |
$rename
: Rename a field
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateMany</span><span class="p">({},</span> <span class="p">{</span> <span class="na">$rename</span><span class="p">:</span> <span class="p">{</span> <span class="na">loss</span><span class="p">:</span> <span class="err">“</span><span class="nx">Profit</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Rename the field loss to profit for all users</span> |
$unset
: Remove a field.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateOne</span><span class="p">({</span> <span class="na">age</span><span class="p">:</span> <span class="mi">26</span> <span class="p">},</span> <span class="p">{</span> <span class="na">$unset</span><span class="p">:</span> <span class="p">{</span> <span class="na">age</span><span class="p">:</span> <span class="dl">""</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Remove the age field from the first user with an age of 26</span> |
$push
: Adds new elements to an array
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateMany</span><span class="p">({},</span> <span class="p">{</span> <span class="na">$push</span><span class="p">:</span> <span class="p">{</span> <span class="na">enemy</span><span class="p">:</span> <span class="err">“</span><span class="nx">Ria</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Add Ria to the enemy array for all users</span> |
$pull
: Rmoves all array elements that match a specified condition.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">updateMany</span><span class="p">({},</span> <span class="p">{</span> <span class="na">$pull</span><span class="p">:</span> <span class="p">{</span> <span class="na">enemy</span><span class="p">:</span> <span class="err">“</span><span class="nx">Arafat</span><span class="err">”</span> <span class="p">}</span> <span class="p">})</span> <span class="c1">// Remove Mike from the friends array for all users</span> |
Modifiers for read
sort
: Sort the results of a find
by the given fields.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">().</span><span class="nx">sort</span><span class="p">({</span> <span class="na">debt</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="na">balance</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span> <span class="p">})</span> <span class="c1">// Returns all users sorted by name in alphabetical order and then if any duplicated names exits, sorts by age in reverse order.</span> |
limit
: Returns a specified number of documents.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">().</span><span class="nx">limit</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">// Returns the first 5 users</span> |
skip
: Skip a specified number of documents from the start.
1 2 3 |
<span class="nx">db</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">find</span><span class="p">().</span><span class="nx">skip</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span> <span class="c1">// Skip the first 7 users when returning results. Freat for pagination when combined with limit.</span> |
Source: https://dev.to/arafat4693/mongodb-cheat-sheet-2f9o