Database

[{"id":"123","first_name":"John","last_name":"Smith","billing_phone":"888","user_email":"John.Smith@gmail.com","role":"customer"},{"id":"456","first_name":"Sally","last_name":"Harper","billing_phone":"999","user_email":"Sally.Harper@gmail.com","role":"customer"},{"id":"789","first_name":"John","last_name":"Doe","billing_phone":"555","user_email":"John.Doe@gmail.com","role":"customer"},{"id":"789","first_name":"Greg","last_name":"Smith","billing_phone":"444","user_email":"Greg.Smith@gmail.com","role":"customer"}]

Query

db.collection.find({$and:[{$or:[{$expr:{$regexMatch:{input:{$concat:["$first_name"," ","$last_name"]},regex:"John Smith",options:"i"}}},{billing_phone:{$regex:"John Smith",$options:"i"}},{user_email:{$regex:"John Smith",$options:"i"}}]},{role:{$in:["customer","admin"]}}]})

Result