Evaluation Operators
Evaluation Operators: free step-by-step lesson with examples, common mistakes, and interview tips — part of MongoDB Tutorial on Toolliyo Academy.
On this page
MongoDB Tutorial · Lesson 25 of 100
Evaluation Operators
Foundations & CRUD ✓ → Queries & Schema → Aggregation & Scale → Atlas & Projects
Queries & Schema · 2 — Design · ~6 min · MongoDB — Query Operators
What is this?
Evaluation operators run expressions while querying: $regex, $expr, $jsonSchema, $mod, $text (with text index), and similar. $expr lets you compare two fields in one document.
Why should you care?
Business rules like “discount must be less than price” or “stock % 2 == 0” need evaluation, not only equality.
See it live — copy this example
Open mongosh or MongoDB Compass, select database nosqlverse, then run the example. Change one field and run again.
db.products.insertMany([
{ name: "Cable", price: 200, discount: 50 },
{ name: "Dock", price: 2000, discount: 2500 },
{ name: "Tape", price: 100, discount: 10 }
])
db.products.find({
$expr: { $lt: ["$discount", "$price"] }
})
db.products.find({ price: { $mod: [100, 0] } })
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- $expr compares discount and price fields — Dock is excluded because discount > price.
- $mod: [100, 0] keeps prices divisible by 100.
- Field paths inside $expr use $fieldName.
Practice next
- Insert the three products.
- Run the $expr query and confirm Dock is out.
- Run the $mod query.
- Find where $subtract price-discount > 1000 using $expr.
- Combine $expr with category equality.
Remember
$expr compares fields inside a document. $mod filters by remainder. Prefer simple operators when possible for indexes.
Promo sanity check
Before publishing deals, a job finds products where discount >= price using $expr.
Outcome: Broken promos never hit the storefront.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!