%dw 2.0
import * from dw::core::Arrays
var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}]
var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}]
output application/json
---
leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId)
leftJoin
leftJoin<L <: Object, R <: Object>(left: Array<L>, right: Array<R>, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l: L, r?: R }>
Joins two arrays of objects by a given ID criteria.
leftJoin returns an array all the left items, merged by ID with any right
items that meet the joining criteria.
Introduced in DataWeave version 2.2.0.
Parameters
| Name | Description | 
|---|---|
  | 
The left-side array of objects.  | 
  | 
The right-side array of objects.  | 
  | 
The criteria used to extract the ID for the left collection.  | 
  | 
The criteria used to extract the ID for the right collection.  | 
Example
This example shows how join behaves. Notice that it returns all objects from
the left-side array (left) but only joins items from the right-side array
(right) if the values of the left-side user.id and right-side
product.ownerId match.
Source
Output
[
  {
    "l": {
      "id": "1",
      "name": "Mariano"
    },
    "r": {
      "ownerId": "1",
      "name": "DataWeave"
    }
  },
  {
    "l": {
      "id": "1",
      "name": "Mariano"
    },
    "r": {
      "ownerId": "1",
      "name": "BAT"
    }
  },
  {
    "l": {
      "id": "2",
      "name": "Leandro"
    }
  },
  {
    "l": {
      "id": "3",
      "name": "Julian"
    },
    "r": {
      "ownerId": "3",
      "name": "DataSense"
    }
  },
  {
    "l": {
      "id": "5",
      "name": "Julian"
    }
  }
]



