MongoDB Aggregation Pipeline Patterns/Join with another collection

Use `$lookup` for collection-to-collection joins.

Section: Core stages

Join with another collection

javascript
javascript
db.orders.aggregate([
  {
    $lookup: {
      from: "users",
      localField: "user_id",
      foreignField: "_id",
      as: "user"
    }
  },
  { $unwind: "$user" }
])
Explanation

`$lookup` is the MongoDB pipeline equivalent of a join.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Core stages
Sum revenue by status
Filter first, then group and sum.
OpenIn sheetjavascriptsame section
Project computed fields
Shape output and derive new values.
OpenIn sheetjavascriptsame section
Unwind an array
Turn array elements into separate pipeline rows.
OpenIn sheetjavascriptsame section
Run multiple result sets with $facet
Produce multiple related aggregations in one pipeline.
OpenIn sheetjavascript2 tag match
Bucket data for reporting
Group values into explicit ranges.
OpenIn sheetjavascript2 tag match
Count pipeline output
Return a final count after filters and transforms.
OpenIn sheetjavascript2 tag match