Database

db={users:[{_id:1234,firstName:"John",lastName:"Smith"}],posts:[{_id:8877,user:1234,title:"My Post"},{_id:9999,user:1235,title:"My Post"}]}

Query

db.posts.aggregate([{$lookup:{from:"users",localField:"user",foreignField:"_id",as:"user",pipeline:[{$search:{compound:{should:[{search:{query:"Jim",path:"user.firstName"}}]}}}]}},{$unwind:{path:"$user",/** preserve is required for OR-matching next*/preserveNullAndEmptyArrays:true}},{$match:{$or:[{"user":{$ne:null}},/** replace "john" with your search term*/{"title":"john"}]}}])

Result