distinctBy operator in Dataweave in Mule

distinctBy operator in Dataweave in Mule


distinctBy operator of dataweave returns only unique values from an array that may have duplicates. Let's check out the below example.







Dataweave code:

%dw 1.0
%output application/json
%var a=payload
---
{
id: payload distinctBy $.id 
}


URL: http://localhost:8081/distinct

Input:

[{ "id":1, "name":"dd" },{ "id":1, "name":"ee" }]


Output:

{
  "id": [
    {
      "id"1,
      "name""dd"
    }
  ]
}


XML project code:


<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd"> <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> <flow name="test_distinctbyFlow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/distinct" doc:name="HTTP"/> <dw:transform-message doc:name="Transform Message"> <dw:set-payload><![CDATA[%dw 1.0 %output application/json %var a=payload --- { id: payload distinctBy $.id }]]></dw:set-payload> </dw:transform-message> </flow> </mule>