MongoDB: Basic CRUD, Projections, Operators

Insert

db.users.insertOne({ name: "Alice", age: 30, active: true })
db.users.insertMany([{ name: "Bob", age: 25 }, { name: "Carol", age: 35 }])

Find

db.users.find({ age: { $gte: 25, $lt: 35 } })
db.users.findOne({ name: "Alice" })

Comparison operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin

Boolean operators:

db.users.find({ $and: [{ age: { $gte: 25 } }, { active: true }] })
db.users.find({ $or:  [{ age: { $lt: 20 } }, { name: "Alice" }] })
db.users.find({ age: { $not: { $gt: 30 } } })
db.users.find({ $nor: [{ active: true }, { age: { $lt: 18 } }] })

Projections1 to include, 0 to exclude (can’t mix, except _id):

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

Sort:

db.users.find().sort({ age: 1 })   // ascending
db.users.find().sort({ age: -1 })  // descending

Limit / Skip:

db.users.find().sort({ age: 1 }).skip(5).limit(10)

Update

db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } })
db.users.updateMany({ active: false }, { $unset: { score: "" } })

Field update operators:

OperatorEffect
$setSet field value
$unsetRemove field
$incIncrement by value ($inc: { age: 1 })
$mulMultiply field ($mul: { score: 2 })

Array update operators:

OperatorEffect
$pushAppend element to array
$popRemove first (-1) or last (1) element
$pullRemove all elements matching a condition
$pullAllRemove all matching values from a list
db.users.updateOne({ name: "Alice" }, { $push: { tags: "admin" } })
db.users.updateOne({ name: "Alice" }, { $pop:  { tags: 1 } })           // remove last
db.users.updateOne({ name: "Alice" }, { $pull: { tags: "admin" } })
db.users.updateOne({ name: "Alice" }, { $pullAll: { tags: ["a", "b"] } })

Upsert — create if not found:

db.users.updateOne({ name: "Dave" }, { $set: { age: 40 } }, { upsert: true })

Delete

db.users.deleteOne({ name: "Bob" })
db.users.deleteMany({ active: false })
Standing
status: online
> location: Brazil