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"}},{$unwind:{path:"$user",preserveNullAndEmptyArrays:true}},{$match:{$expr:{$or:[{$eq:[{$toLower:"$user.firstName"},"john"]},{$eq:[{$toLower:"$user.lastName"},"john"]},{$eq:["$title","john"]}]}}}])

Result