Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
FAQs Support
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

MongoDB Query Operators

What are Query Operators?

Query operators let you build powerful filters to match documents based on conditions. They are prefixed with $ and are used inside the filter argument of find(), updateOne(), deleteMany(), and other methods.

Comparison Operators

$eq, $ne, $gt, $gte, $lt, $lte, $in, $nin
// $eq — equal to (same as { age: 29 })
db.users.find({ age: { $eq: 29 } })

// $ne — not equal to
db.users.find({ role: { $ne: "admin" } })

// $gt / $gte — greater than / greater than or equal
db.users.find({ age: { $gt: 25 } })
db.users.find({ age: { $gte: 18 } })

// $lt / $lte — less than / less than or equal
db.users.find({ age: { $lt: 65 } })
db.users.find({ score: { $lte: 100 } })

// Range query — age between 20 and 40
db.users.find({ age: { $gte: 20, $lte: 40 } })

// $in — matches any value in the array
db.users.find({ role: { $in: ["admin", "editor"] } })

// $nin — matches none of the values in the array
db.users.find({ status: { $nin: ["banned", "suspended"] } })

Logical Operators

$and, $or, $not, $nor
// $and — all conditions must be true
db.users.find({
  $and: [
    { age: { $gte: 18 } },
    { active: true },
    { role: "user" }
  ]
})

// $or — at least one condition must be true
db.users.find({
  $or: [
    { role: "admin" },
    { age: { $gt: 50 } }
  ]
})

// $not — inverts the condition
db.users.find({ age: { $not: { $gt: 30 } } })

// $nor — none of the conditions must be true
db.users.find({
  $nor: [
    { role: "banned" },
    { active: false }
  ]
})

// Combining $and and $or
db.users.find({
  $and: [
    { active: true },
    { $or: [{ role: "admin" }, { role: "editor" }] }
  ]
})

Element Operators

$exists and $type
// $exists — field exists (true) or does not exist (false)
db.users.find({ phone: { $exists: true } })
db.users.find({ deletedAt: { $exists: false } })

// $exists with a value check
db.users.find({ phone: { $exists: true, $ne: null } })

// $type — field matches a specific BSON type
db.users.find({ age: { $type: "int" } })
db.users.find({ age: { $type: "double" } })
db.users.find({ name: { $type: "string" } })
db.users.find({ tags: { $type: "array" } })

// Multiple types
db.users.find({ score: { $type: ["int", "double"] } })

Evaluation and Array Operators

$regex, $expr, $all, $elemMatch, $size
// $regex — match a regular expression pattern
db.users.find({ name: { $regex: /^alice/i } })
db.users.find({ email: { $regex: "@gmail\\.com$" } })

// $expr — use aggregation expressions in queries
// Find users where their score is greater than their target
db.users.find({ $expr: { $gt: ["$score", "$target"] } })

// $all — array contains all specified values
db.products.find({ tags: { $all: ["mongodb", "database"] } })

// $elemMatch — at least one array element matches all conditions
db.orders.find({
  items: {
    $elemMatch: { product: "Laptop", qty: { $gte: 2 } }
  }
})

// $size — array has exactly N elements
db.users.find({ hobbies: { $size: 3 } })
Query Operators Quick Reference
// Comparison:  $eq $ne $gt $gte $lt $lte $in $nin
// Logical:     $and $or $not $nor
// Element:     $exists $type
// Evaluation:  $regex $expr $where $mod $text
// Array:       $all $elemMatch $size
// Bitwise:     $bitsAllClear $bitsAllSet $bitsAnyClear $bitsAnySet

// Real-world example: find active premium users aged 25-45
// who have at least one order and a verified email
db.users.find({
  active: true,
  plan: "premium",
  age: { $gte: 25, $lte: 45 },
  orderCount: { $gte: 1 },
  emailVerified: { $exists: true, $eq: true }
})

Ready to Level Up Your Skills?

Explore 500+ free tutorials across 20+ languages and frameworks.