Database

[{"_id":1,"category":"fruit","userId":1,"name":"Banana"},{"_id":2,"category":"fruit","userId":2,"name":"Apple"},{"_id":3,"category":"fresh-food","userId":1,"name":"Fish"},{"_id":13,"category":"fresh-food","userId":1,"name":"Fish"},{"_id":113,"category":"fresh-food","userId":1,"name":"Fish"},{"_id":1113,"category":"fresh-food","userId":1,"name":"Fish"},{"_id":11113,"category":"fresh-food","userId":1,"name":"Fish"},{"_id":4,"category":"fresh-food","userId":2,"name":"Shrimp"},{"_id":5,"category":"vegetable","userId":1,"name":"Salad"},{"_id":6,"category":"vegetable","userId":2,"name":"carrot"}]

Query

db.collection.aggregate([{"$facet":{"fruit":[{$match:{"category":"fruit"}}],"non_fruit":[{$match:{$expr:{$ne:["$category","fruit"]}}},{$group:{_id:{c:"$category",u:"$userId"},data:{$push:"$$ROOT"}}},{$group:{_id:"$_id.c",v:{$push:{uerId:"$_id.u",data:{"$slice":["$data",3]}}}}},{$addFields:{"k":"$_id",_id:"$$REMOVE"}},]}},{$addFields:{non_fruit:{"$arrayToObject":"$non_fruit"}}},{"$replaceRoot":{"newRoot":{"$mergeObjects":["$$ROOT","$non_fruit"]}}},{$project:{non_fruit:0}}])

Result