Goal: Filter results based on status or numerical ranges. Key Idea: MongoDB uses Operators (words starting with
$) instead of math symbols.
| SQL | MongoDB Operator | Meaning |
|---|---|---|
= |
{ field: value } |
Equals |
> |
$gt |
Greater Than |
>= |
$gte |
Greater Than or Equal |
< |
$lt |
Less Than |
<= |
$lte |
Less Than or Equal |
!= |
$ne |
Not Equal |
IN (...) |
$in: [...] |
Value is in array |
NOT IN (...) |
$nin: [...] |
Value is not in array |
AND |
, (comma) |
Both conditions must match |
OR |
$or: [...] |
Either condition matches |
SELECT *
FROM Users
WHERE status = 'active'
AND age > 21;
db.users.find({
status: "active",
age: { $gt: 21 }
});
db.users.find({
status: "active", // Plain equals: status = 'active'
age: { $gt: 21 } // Operator: age > 21
// β
// $gt wraps inside an object { }
});
-- SQL
SELECT * FROM Users WHERE status = 'active' OR status = 'pending';
// MongoDB
db.users.find({
$or: [
{ status: "active" },
{ status: "pending" }
]
});
-- SQL
SELECT * FROM Users WHERE role IN ('admin', 'editor');
// MongoDB
db.users.find({
role: { $in: ["admin", "editor"] }
});
-- SQL
SELECT * FROM Users WHERE age BETWEEN 18 AND 30;
// MongoDB
db.users.find({
age: { $gte: 18, $lte: 30 }
});
- Multiple conditions inside
{}are treated as AND by default. - Operators always go inside an object:
{ $gt: 21 }, not$gt: 21on its own.