MongoDB Cheat Sheet

Last Updated: November 21, 2025

Basic Operations

show dbs
List all databases
use dbName
Switch to database
show collections
List collections
db.collection.find()
Find all documents
db.collection.insertOne({})
Insert one document
db.collection.updateOne({}, {$set: {}})
Update document
db.collection.deleteOne({})
Delete document

Query Operations

// Find documents
db.users.find({ age: { $gt: 18 } })
db.users.find({ name: "John" })
db.users.findOne({ _id: ObjectId("...") })

// Projection (select fields)
db.users.find({}, { name: 1, email: 1, _id: 0 })

// Sorting and Limiting
db.users.find().sort({ age: -1 }).limit(10)

// Count
db.users.countDocuments({ active: true })

CRUD Operations

// Create
db.users.insertOne({
  name: "John",
  age: 30,
  email: "john@example.com"
})

db.users.insertMany([
  { name: "Alice", age: 25 },
  { name: "Bob", age: 35 }
])

// Read
db.users.find({ age: { $gte: 25, $lte: 35 } })

// Update
db.users.updateOne(
  { name: "John" },
  { $set: { age: 31 }, $inc: { visits: 1 } }
)

db.users.updateMany(
  { active: false },
  { $set: { archived: true } }
)

// Delete
db.users.deleteOne({ _id: ObjectId("...") })
db.users.deleteMany({ archived: true })

Query Operators

Operator Description Example
$eq Equal {age: {$eq: 30}}
$gt/$gte Greater than/equal {age: {$gte: 18}}
$lt/$lte Less than/equal {age: {$lt: 65}}
$in In array {status: {$in: ['active', 'pending']}}
$ne Not equal {status: {$ne: 'deleted'}}
$and Logical AND {$and: [{age: {$gte: 18}}, {active: true}]}
$or Logical OR {$or: [{age: {$lt: 18}}, {age: {$gt: 65}}]}

Aggregation

db.orders.aggregate([
  { $match: { status: "completed" } },
  { $group: {
      _id: "$customerId",
      total: { $sum: "$amount" },
      count: { $sum: 1 }
    }
  },
  { $sort: { total: -1 } },
  { $limit: 10 }
])
💡 Pro Tip: Always create indexes on fields you query frequently for better performance!
← Back to Programming Languages | Browse all categories | View all cheat sheets