Database
[{"logs":{"events":{"type":"call_action","attributes":[{"key":"module","value":"module1"},{"key":"data","value":"data_value_module_1"},{"key":"module","value":"module2"},{"key":"data","value":"data_value_module_2"}]}},}]
Query
db.collection.aggregate([{$set:{"logs.events.attributes":{$reduce:{input:"$logs.events.attributes",initialValue:[],in:{$concatArrays:["$$value",[{k:"$$this.key",v:"$$this.value",mod:{$mod:[{$size:"$$value"},2]}}]]}}}}},{$project:{_id:0,type:"$logs.events.type",firstEvent:{$filter:{input:"$logs.events.attributes",cond:{$eq:["$$this.mod",0]}}},secondEvent:{$filter:{input:"$logs.events.attributes",cond:{$eq:["$$this.mod",1]}}}}},{$project:{"logs.events":{type:"$type",attributes:{$zip:{inputs:["$firstEvent","$secondEvent"]}}}}},{$unwind:"$logs.events.attributes"},{$set:{"logs.events.attributes":{$map:{input:"$logs.events.attributes",in:{k:"$$this.k",v:"$$this.v"}}}}},{$set:{"logs.events.attributes":{$arrayToObject:"$logs.events.attributes"}}}])