Concatenate field values from multiple rows to single row/documents

I am looking for a solution to concat all the field values from multiple row into single separated by delimited symbol ‘!’.

Input data:

[
{“Record”: “1”},
{“Record”: “2”},
{“Record”: “5”},
{“Record”: “4”},
{“Record”: “6”}
]

Expected Output:

[
{“Records”: “1!2!5!4!6”}
]

Hi @smeitei ,
First you need to group all input documents into a single array. For that you can use the Group by N snap with the setting “Group size” seto to 0. Then use a mapper with the following expression: jsonPath($, "Records[*]").map(val => val.get("Record")).join("!")

image
Output:
image

You can also use the Aggregate snap, but this will use the default delimeter.
image

1 Like

Another one solution for this.
jsonPath($, "$group[*].Record").reduce((acc, curr) => acc + "!" + curr)

1 Like

@j.angelevski - Thanks for you input and it works.