Esto se debe a la forma en que escribió la consulta, lo que significa que debe coincidir con la regex
dada. consulta con todos los parámetros pasados como y (&&) operación. Lo que podría hacer es hacer una operación and or(||) con todos los campos requeridos.
Aquí el código de muestra que puedes probar.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});