Database

db={"Product":[{"_id":"111","subcategory":{"_id":"456","categoryName":"Sneakers",},"product_name":"Modern sneaker","description":"Stylish","price":4400},{"_id":"222","subcategory":{"_id":"456","categoryName":"Sneakers",},"product_name":"Blue shoes","description":"Vived colors","price":7500},{"_id":"333","subcategory":{"_id":"123","categoryName":"Jackets","__v":0},"product_name":"Modern jacket","description":"Stylish","price":4400}],"Subcategory":[{"_id":"123","categoryName":"Jackets",},{"_id":"456","categoryName":"Sneakers",}]}

Query

db.Product.aggregate([{"$lookup":{"from":"Subcategory","localField":"subcategory.categoryName","foreignField":"categoryName","as":"subcategories"}},{"$unwind":"$subcategories"},{"$group":{"_id":"$subcategories.categoryName","data":{"$push":"$$ROOT"}}},{"$project":{"data":{"product_name":1,"description":1,"price":1}}},{"$replaceRoot":{"newRoot":{"$arrayToObject":[[{"k":"$_id","v":"$data"}]]}}}])

Result