Database

db={texts:[{"_id":1,"sentence":["a beautiful sun makes a bright day","not usefull here"]},{"_id":2,"sentence":["today is a nice day","there will be a full moon at night"]}],terms:[{"_id":1,"items":["sun","day"]},{"_id":2,"items":["moon","night"]},]}

Query

db.texts.aggregate([{$lookup:{from:"terms",let:{sentences:"$sentence"},pipeline:[{$match:{$expr:{$reduce:{initialValue:false,input:{$map:{input:"$$sentences",as:"sentence",in:{$reduce:{input:"$items",initialValue:"true",in:{$and:["$$value",{$regexMatch:{regex:"$$this",input:"$$sentence"}}]}}}}},in:{$or:["$$this","$$value"]}}}}}],as:"term_obj"}}])

Result