Database
db={"car_parts":[{"_id":1,"name":"shock absorber"},{"_id":2,"name":"hood"},{"_id":3,"name":"steering wheel","sub_parts":[1,/** other car_parts._id s*/2]},{"_id":4,"name":"tire"},],"customers":[{"_id":"customer_1","parts":[{"scanned_parts":[1/** this is car_parts._id 1*/],date:"15.01.2020"},{"scanned_parts":[4],date:"21.05.2021"}]},{"_id":"customer_2","parts":[{"scanned_parts":[4,1],date:"04.02.2021"}]},{"_id":"customer_3","parts":[{"scanned_parts":[3],date:"15.07.2020"}]},{"_id":"customer_8","parts":[{"scanned_parts":[3],date:"15.07.2020"}]},{"_id":"customer_7",}]}
Query
db.car_parts.aggregate([{$project:{topLevel:{"$concatArrays":[{"$ifNull":["$sub_parts",[]]},["$_id"]]},sub_parts:1}},{$unwind:"$topLevel"},{$group:{_id:"$topLevel",parts:{$push:"$_id"},sub_parts:{$first:"$sub_parts"}}},{$project:{parts:{"$concatArrays":[{"$ifNull":["$sub_parts",[]]},"$parts"]}}},{$lookup:{from:"customers",localField:"parts",foreignField:"parts.scanned_parts",as:"customers"}},{$project:{customers:"$customers._id"}}])