Questo perché il modo in cui hai scritto la query significa che dovrebbe corrispondere alla regex
specificata query con tutti i parametri passati come l'operazione e(&&). Quello che potresti fare è fare e o(||) operazione con tutti i campi richiesti.
Qui il codice di esempio che puoi provare.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});