Database

[{"name":"item1","criteria":[{"category":"category_A","links":["link_issue1","link_issue2","link_issue3"]},{"category":"category_B","links":["link_issue1","link_issue2"]}]},{"name":"item2","criteria":[{"category":"category_C","links":["link_issue1","link_issue2"]}]}]

Query

db.collection.update({},[{$set:{criteria:{$map:{input:"$criteria",as:"c",in:{category:"$$c.category",links:{"$reduce":{"input":"$$c.links","initialValue":"","in":{"$concat":["$$value","$$this",{$cond:{if:{"$eq":[{$subtract:[{$size:"$$c.links"},1]},{$indexOfArray:["$$c.links","$$this"]}]},then:"",else:","}}]}}}}}}}}],{"multi":true})

Result