Database
[{"_id":1,"user":"xyz","sentence":"I watch movies and web series.","nouns":["movies","web series"],"verbs":["watch"]},{"_id":2,"user":"xyz","sentence":"movies are good way to relax","nouns":["movies"],"verbs":["relax"]},{"_id":3,"user":"abc","sentence":"I play cricket.","nouns":["cricket"],"verbs":["play"]},{"_id":4,"user":"abc","sentence":"I sleep.","nouns":[],"verbs":["sleep"]},]
Query
db.collection.aggregate([{$group:{_id:"$user",sentence:{$push:"$sentence"},verbs:{$push:"$verbs"},nouns:{$push:"$nouns"}}},{$project:{sentence:1,verbs:{$reduce:{input:"$verbs",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}},nouns:{$reduce:{input:"$nouns",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}}}},{$addFields:{mix:{$concatArrays:["$verbs","$nouns"]}}},{$unwind:"$mix"},{$group:{_id:{user:"$_id",word:"$mix"},count:{$sum:1},sentence:{$first:"$sentence"},verbs:{$first:"$verbs"},nouns:{$first:"$nouns"}}},{$group:{_id:"$_id.user",data:{$push:{k:"$_id.word",v:"$count"}},verbs:{$first:"$verbs"},nouns:{$first:"$nouns"},sentence:{$first:"$sentence"}}},{$project:{_id:1,sentence:1,noun_count:{$arrayToObject:{$filter:{input:"$data",as:"data",cond:{$in:["$$data.k","$nouns"]}}}},verb_count:{$arrayToObject:{$filter:{input:"$data",as:"data",cond:{$in:["$$data.k","$verbs"]}}}}}}])