Database

[{"world":"Comic","characters":[{"character":"megaman","type":"hero","code":"123"},{"character":"dr willow","type":"villain","code":"1234"},{"character":"spiderman","type":"hero","code":"12345"},{"character":"venom","type":"villain","code":"123456"}]}]

Query

db.collection.aggregate([{$addFields:{array_hero:{$filter:{input:"$characters",cond:{$eq:["$$this.type","hero"]}}},array_villain:{$filter:{input:"$characters",cond:{$eq:["$$this.type","villain"]}}},},},{$project:{array_hero:{$map:{input:"$array_hero",as:"hero",in:"$$hero.code"}},array_villain:{$map:{input:"$array_villain",as:"villain",in:"$$villain.code"}},}}])

Result