Dzieje się tak, ponieważ sposób, w jaki napisałeś zapytanie, co oznacza, że powinno ono pasować do podanego regex
zapytanie ze wszystkimi przekazanymi parametrami, takimi jak i (&&). To, co możesz zrobić, to wykonać i lub(||) operację ze wszystkimi wymaganymi polami.
Oto przykładowy kod, który możesz wypróbować.
db.users.find({
"$or": [
{ name: { '$regex': query, '$options': 'i' } },
{ ref: { '$regex': query, '$options': 'i' } }
]
}).then((users) => {
res.json(users);
});