Lesson 57/100

Tutorials MongoDB Tutorial

$facet

$facet: 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 57 of 100

$facet

Foundations & CRUD ✓Queries & Schema ✓Aggregation & ScaleAtlas & Projects

Aggregation & Scale · 3 — Pipelines · ~10 min · MongoDB — Aggregation Pipelines

What is this?

$facet runs multiple sub-pipelines on the same input documents in one stage, producing several result lists side by side — perfect for dashboards.

Why should you care?

A single API response may need totals, top 5 products, and status breakdown without scanning the collection three times from the client.

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.orders.insertMany([
  { status: "paid", total: 100 },
  { status: "paid", total: 400 },
  { status: "cancelled", total: 50 }
])
db.orders.aggregate([
  { $facet: {
      byStatus: [ { $group: { _id: "$status", n: { $sum: 1 } } } ],
      totals: [ { $group: { _id: null, revenue: { $sum: "$total" } } } ],
      sample: [ { $limit: 2 } ]
  }}
])

Run Example »

Edit the code below and click Run to see the result in Toolliyo’s live editor.

Code
Result

What happened?

  • One $facet outputs an object with byStatus, totals, and sample arrays.
  • Each sub-pipeline sees the same input (all orders here).
  • Clients get three views in one round trip.

Practice next

  1. Run the facet pipeline.
  2. Add a $match before $facet to scope a tenant.
  3. Add a topOrders sub-pipeline with $sort+$limit.
  4. Facet products: price histogram + brand counts.
  5. Add a $project after facet to reshape.

Remember

$facet runs parallel sub-pipelines. Great for dashboard payloads. Filter before faceting.

Seller home dashboard

One request returns order counts by status, GMV, and recent orders.

Outcome: Mobile seller app loads the home screen in one call.

Interview prep for this lesson

Practice these questions aloud after reading—each links to a full structured answer.

Junior Detailed
Explain SQL queries in the context of MongoDB.
Short answer: Interviewers want a crisp definition, a practical example from your projects, and awareness of trade-offs—not textbook dumps. Explain a bit more How to structure your answer (60–90 seconds) Define SQL queri…
Mid Detailed
What are common mistakes teams make with Schema design when using MongoDB?
Short answer: Interviewers want a crisp definition, a practical example from your projects, and awareness of trade-offs—not textbook dumps. Explain a bit more How to structure your answer (60–90 seconds) Define Schema de…
Senior Detailed
How would you debug a production issue related to Transactions in a MongoDB application?
Short answer: Interviewers want a crisp definition, a practical example from your projects, and awareness of trade-offs—not textbook dumps. Explain a bit more How to structure your answer (60–90 seconds) Define Transacti…
Junior Detailed
Describe a real-world scenario where Normalization mattered in a MongoDB project.
Short answer: Interviewers want a crisp definition, a practical example from your projects, and awareness of trade-offs—not textbook dumps. Explain a bit more How to structure your answer (60–90 seconds) Define Normaliza…
Questions on this lesson 0

Sign in to ask a question or upvote helpful answers.

No questions yet — be the first to ask!

MongoDB Tutorial
Course syllabus

MongoDB Tutorial

MongoDB — Foundations
MongoDB — CRUD Operations
MongoDB — Query Operators
MongoDB — Schema Design
MongoDB — Indexing & Performance
MongoDB — Aggregation Pipelines
MongoDB — Replication & Sharding
MongoDB — Atlas & Security
MongoDB — Modern Features
MongoDB — Real-World Projects
Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details