пн goose искать точное слово в фразе - PullRequest
0 голосов
/ 26 февраля 2020

На данный момент, когда я ищу текст, он просматривает каждый символ, используя этот код:

model.find( { title: { $regex: /word/i } } )

, но результат получается как «слово», «слово123» или «333word3», и я хочу только заголовки, содержащие слово «слово». например: «это слово»

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Проще говоря, \ b позволяет выполнять поиск «только целых слов» с использованием регулярного выражения в виде \bword\b

Model.find({
  title: {
    $regex: "\\bword\\b"
  }
})

//or

Model.find({
    title: /\bword\b/
})

Если вы хотите игнорировать такие случаи : foo-word, bar:word, word-buz используйте это:

Model.find({
  title: {
    $regex: "\\b(^|\\s|[^\\W])word(\\s|[^\\W]|$)\\b"
  }
})
0 голосов
/ 26 февраля 2020

Вы регулярное выражение выражение не исключает те опции, которые вы сказали

Вам необходимо либо:

  1. Измените регулярное выражение на что-то вроде / word /i, если вы хотите ввести пробел вокруг слова, учтите, что если такие комбинации, как word-word2, актуальны, вам придется учитывать их и в регулярном выражении, которое вы сформировали.

  2. Используйте параметр Mon go $ text , для этого вам нужно будет построить текстовый индекс на этом поле. Имейте в виду, что Mon go основывается на словах, когда он индексирует текстовое поле, означая, что такое слово, как cars, станет car, что означает, что это может быть не лучшим вариантом для вас, если требуется точное соответствие.

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