Nearby lessons

14 of 22

🧮 MongoDB: Aggregation Operators — $lookup Example

MongoDB Aggregation Framework is used to process data records and return computed results. It allows you to perform operations like filtering, grouping, joining, and transforming data. One of the most powerful aggregation operators is $lookup, which performs a left outer join between two collections.

📚 Initial Data Setup — students Collection

MongoDB Shell
NoSQL
Database
1db.students.insertMany([
2 { _id: 1, name: 'Akshay Kumar', class: 'BCA' },
3 { _id: 2, name: 'Salman Khan', class: 'Btech' },
4 { _id: 3, name: 'Shahid Kapoor', class: 'BSc' },
5 { _id: 4, name: 'John Abraham', class: 'BCA' }
6]);
Query Result
JSON Output
✅ 4 student documents inserted successfully.

📘 Initial Data Setup — library Collection

MongoDB Shell
NoSQL
Database
1db.library.insertMany([
2 { _id: 1, book: 'Atomic Habits', student_id: 1 },
3 { _id: 2, book: 'You Can', student_id: 2 },
4 { _id: 3, book: 'Do It Today', student_id: 4 }
5]);
Query Result
JSON Output
✅ 3 library documents inserted successfully.

1️⃣ Using $lookup — Joining Two Collections

MongoDB Shell
NoSQL
Database
1db.library.aggregate([
2 {
3 $lookup: {
4 from: "students", // The target collection to join
5 localField: "student_id", // Field from library collection
6 foreignField: "_id", // Field from students collection
7 as: "Student" // Output array field name
8 }
9 }
10]);
Query Result
JSON Output
[
{
"_id": 1,
"book": "Atomic Habits",
"student_id": 1,
"Student": [
{ "_id": 1, "name": "Akshay Kumar", "class": "BCA" }
]
},
{
"_id": 2,
"book": "You Can",
"student_id": 2,
"Student": [
{ "_id": 2, "name": "Salman Khan", "class": "Btech" }
]
},
{
"_id": 3,
"book": "Do It Today",
"student_id": 4,
"Student": [
{ "_id": 4, "name": "John Abraham", "class": "BCA" }
]
}
]

2️⃣ Using $unwind — Flatten Joined Array

MongoDB Shell
NoSQL
Database
1db.library.aggregate([
2 {
3 $lookup: {
4 from: "students",
5 localField: "student_id",
6 foreignField: "_id",
7 as: "Student"
8 }
9 },
10 { $unwind: "$Student" } // Converts array to individual documents
11]);
Query Result
JSON Output
[
{
"_id": 1,
"book": "Atomic Habits",
"student_id": 1,
"Student": { "_id": 1, "name": "Akshay Kumar", "class": "BCA" }
},
{
"_id": 2,
"book": "You Can",
"student_id": 2,
"Student": { "_id": 2, "name": "Salman Khan", "class": "Btech" }
},
{
"_id": 3,
"book": "Do It Today",
"student_id": 4,
"Student": { "_id": 4, "name": "John Abraham", "class": "BCA" }
}
]

3️⃣ Using $project — Show Selected Fields Only

MongoDB Shell
NoSQL
Database
1db.library.aggregate([
2 {
3 $lookup: {
4 from: "students",
5 localField: "student_id",
6 foreignField: "_id",
7 as: "Student"
8 }
9 },
10 { $unwind: "$Student" },
11 {
12 $project: {
13 _id: 0,
14 book: 1,
15 "Student.name": 1,
16 "Student.class": 1
17 }
18 }
19]);
Query Result
JSON Output
[
{ "book": "Atomic Habits", "Student": { "name": "Akshay Kumar", "class": "BCA" } },
{ "book": "You Can", "Student": { "name": "Salman Khan", "class": "Btech" } },
{ "book": "Do It Today", "Student": { "name": "John Abraham", "class": "BCA" } }
]
Keep Going!MongoDB - Arithmetic Operators