我有一个像这样的数据集:
{
_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存在于苹果上。
有关如何改善此问题的任何建议。任何建议都非常感谢。
答案 0 :(得分:0)
如Sergio建议,使用正则表达式\ba\b
。它将仅匹配单独的a
答案 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)
});