C'est parce que la façon dont vous avez écrit la requête signifie qu'elle doit correspondre à la regex
donnée requête avec tous les paramètres passés comme l'opération and(&&). Ce que vous pouvez faire est de faire une opération and or(||) avec tous les champs obligatoires.
Voici l'exemple de code que vous pouvez essayer.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});