Je to proto, že způsob, jakým jste napsali dotaz, znamená, že by měl odpovídat danému regex
dotaz se všemi předávanými parametry jako and(&&) operace. Co můžete udělat, je provést operaci a nebo(||) se všemi požadovanými poli.
Zde je ukázkový kód, který si můžete vyzkoušet.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});