如何增强mongodb搜索

时间:2018-11-29 07:46:26

标签: regex mongodb

我有一个像这样的数据集:

{
  _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的对象,而不要返回到第一个对象,因为a存在于苹果上。

有关如何改善此问题的任何建议。任何建议都非常感谢。

2 个答案:

答案 0 :(得分:0)

如Sergio建议,使用正则表达式\ba\b。它将仅匹配单独的a

Regex online demo

答案 1 :(得分:0)

尝试:

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)
});