регулярное выражение получить наиболее близкое соответствие с данной строкой - PullRequest
0 голосов
/ 06 марта 2019

У меня в коде поиск по регулярному выражению для получения имен в моей БД по заданной строке. У меня проблема в том, что если у меня есть имя «Джим» и имя «Джимми», я по какой-то причине всегда получаю «Джимми».

let regexp = new RegExp(userName, "i");
let name = await names.findOne({ name: regexp });

Поэтому, когда я набираю «Джимми», я получаю Джимми, «Джимми» - я получаю Джимми, все хорошо, но когда я пытаюсь найти «Джим», я получаю Джимми, поэтому у меня нет никакого способа получить Джима.

Также я не могу найти имена, если они есть (или)? Пример: Том (Томас), и я ищу именно «Том (Томас)», он его вообще не находит, но это может быть проблемой с мангустом.

1 Ответ

0 голосов
/ 06 марта 2019

Я думаю, что это проблема того, как вы упорядочиваете свою базу данных или, по крайней мере, результаты, которые вы запрашиваете у нее.Вы можете либо отсортировать таблицу, либо отсортировать результаты после запроса к ним.

Попробуйте использовать один из них (в алфавитном или обратном алфавитном порядке):

let name = await names.sort({ name: 1 }).findOne({ name: regexp });
let name = await names.sort({ name: -1 }).findOne({ name: regexp });

Для второго вопросапохоже, что вы хотите исследовать «Нечеткое сопоставление» - чтобы такие вещи, как Tom, могли возвращать результаты, например Thomas.

Попробуйте взглянуть на это:

Нечеткий поиск с Mongodb?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...