bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Node.js/Database Integration
Node.js•Database Integration

Node.js MongoDB Join

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Node.js MongoDB Join?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

[ { ___: 1, product_id: 154, status: 1 }
3Order

Put the learning moves in the order that makes the concept easiest to apply.

Consider you have a "orders" collection and a "products" collection:
The $lookup stage lets you specify which collection you want to join with the current collection, and which fields that should match.
MongoDB is not a relational database, but you can perform a left outer join by using the $lookup stage.

Join Collections

MongoDB is not a relational database, but you can perform a left outer join by using the $lookup stage.

The $lookup stage lets you specify which collection you want to join with the current collection, and which fields that should match.

Consider you have a "orders" collection and a "products" collection:

orders

[ { _id: 1, product_id: 154, status: 1 }
]

products

[ { _id: 154, name: 'Chocolate Heaven' }, { _id: 155, name: 'Tasty Lemons' }, {
 _id: 156, name: 'Vanilla Dreams' }
 ]

Example

Join the matching "products" document(s) to the "orders" collection:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://127.0.0.1:27017/";
MongoClient.connect(url, function(err, db) {
 if (err) throw err;
 let dbo = db.db("mydb");
 dbo.collection('orders').aggregate([ { $lookup:
 {
 from: 'products',
 localField: 'product_id',
 foreignField: '_id',
 as: 'orderdetails'
 }
 }
 ]).toArray(function(err, res) {
 if (err) throw err;
 console.log(JSON.stringify(res));
 db.close();
});
});

Save the code above in a file called "demo_mongodb_join.js" and run the file:

Run "demo_mongodb_join.js"

C:\Users\
Your Name
>node demo_mongodb_join.js

Which will give you this result

[ { "_id": 1, "product_id": 154, "status": 1, "orderdetails": [ { "_id": 154, "name": "Chocolate Heaven" } ]
 }
]

As you can see from the result above, the matching document from the products collection is included in the orders collection as an array.

Previous

Node.js MongoDB Limit

Next chapter

Advanced Communication

Start with Node.js GraphQL