Isso ocorre porque a maneira como você escreveu a consulta, o que significa que ela deve corresponder ao
regex
fornecido query com todos os parâmetros passados como a operação and(&&). O que você pode fazer é fazer e or(||) operação com todos os campos obrigatórios. Aqui o código de exemplo que você pode tentar.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});