Toolkitly
One moment…
toolkitly

MongoDB Cheat Sheet

MongoDB reference.

37/37
//CRUD9

Insert one document

$db.users.insertOne({ name: 'John', age: 30 })

Insert many documents

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

Find all documents

$db.users.find()

Find one document

$db.users.findOne({ name: 'John' })

Update one

$db.users.updateOne(
  { name: 'John' },
  { $set: { age: 31 } }
)

Update many

$db.users.updateMany(
  { age: { $lt: 30 } },
  { $inc: { age: 1 } }
)

Upsert

$db.users.updateOne(
  { name: 'John' },
  { $set: { age: 31 } },
  { upsert: true }
)

Delete one

$db.users.deleteOne({ name: 'John' })

Delete many

$db.users.deleteMany({ age: { $lt: 18 } })
//Query operators10

Equality

$db.users.find({ name: 'John' })

Greater than / less than

$db.users.find({ age: { $gte: 25, $lt: 40 } })

In operator

$db.users.find({ status: { $in: ['active', 'pending'] } })

OR condition

$db.users.find({ $or: [{ age: 25 }, { age: 30 }] })

AND condition

$db.users.find({ $and: [{ age: { $gte: 18 } }, { status: 'active' }] })

Regex match

$db.users.find({ name: /^J/ })

Exists

$db.users.find({ email: { $exists: true } })

Array contains

$db.users.find({ tags: 'admin' })

Projection

$db.users.find({}, { name: 1, email: 1, _id: 0 })

Sort / limit / skip

$db.users.find().sort({ age: -1 }).limit(10).skip(20)
//Aggregation5

Basic pipeline

$db.orders.aggregate([
  { $match: { status: 'complete' } },
  { $group: { _id: '$user', total: { $sum: '$amount' } } },
  { $sort: { total: -1 } }
])

Lookup (join)

$db.orders.aggregate([
  { $lookup: {
    from: 'users',
    localField: 'userId',
    foreignField: '_id',
    as: 'user'
  } }
])

Unwind array

$db.posts.aggregate([{ $unwind: '$tags' }])

Project fields

$db.users.aggregate([
  { $project: { fullName: { $concat: ['$first', ' ', '$last'] } } }
])

Count documents

$db.users.aggregate([{ $count: 'total' }])
//Indexes6

Create index

$db.users.createIndex({ name: 1 })

Compound index

$db.users.createIndex({ name: 1, age: -1 })

Unique index

$db.users.createIndex({ email: 1 }, { unique: true })

Text index

$db.posts.createIndex({ title: 'text', body: 'text' })

List indexes

$db.users.getIndexes()

Drop index

$db.users.dropIndex('name_1')
//Admin7

Show databases

$show dbs

Switch database

$use <database_name>

Show collections

$show collections

Drop database

$db.dropDatabase()

Drop collection

$db.users.drop()

Server status

$db.serverStatus()

Current operations

$db.currentOp()