Как улучшить поиск по mongodb - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть такой набор данных:

{
  _id: ObjectId("5b51a905c2ee6718204e945d"),
  post: "hello apple"
},
{
  _id: ObjectId("5b51a905c2ee6718204e945e"),
  post: "he is going to buy a cup of coffee"
}

Теперь я хотел бы создать поиск, для этого я написал запрос, т.е.

db.Collection.find({
  post: { $regex: req.body.searchterm, $options: "i" }
}).then(data => {
  console.log(data);
})
.catch(error => {
  console.log(error)
});

Это работает нормально.Предположим, я ищу «а», тогда он вернет первый и второй объект.Но я хочу, чтобы результат, в котором индивидуально написано a, не появлялся между символами.

Я хочу, чтобы возвращался только второй объект, где a записан один, но не пришел к первому объекту, потому что a присутствует в apple.

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

попробуйте это:

var expression = new RegExp("(?=.*\\b" +req.body.searchterm + "\\b)")

db.Collection.find({
  post: { $regex: expression, $options: "i" }
}).then(data => {
  console.log(data);
})
.catch(error => {
  console.log(error)
});
0 голосов
/ 29 ноября 2018

Как предложил Серхио, используйте регулярное выражение \ba\b.Он будет соответствовать только отдельным a

Regex online demo

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