Example join collection in mongoDB with nodejs

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:




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






  { _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


var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://";

MongoClient.connect(url, function(err, db) {

  if (err) throw err;

  var dbo = db.db("mydb");


    { $lookup:


         from: 'products',

         localField: 'product_id',

         foreignField: '_id',

         as: 'orderdetails'



    ]).toArray(function(err, res) {

    if (err) throw err;






Run and result:


C:\Nodejs>node mongodbJoin2Collection.js

[{"_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.