【发布时间】:2021-02-25 16:01:24
【问题描述】:
我有一个非常具体的挑战,经过我所有的搜索,我似乎无法找到答案。我正在寻找 MongoDB 中的一篇文章,其中“内容”列与多个可能的正则表达式中的任何一个匹配。
一般的想法是,我想输入一个单词,然后返回与该单词匹配的任何列以及带有任何后缀的单词。例如:
如果用户输入“建立”,我想搜索内容列包含以下任何一项的文章:“建立”、“建立”、“建立”、“建立”等...
我可以生成可能的字符串列表来搜索自己,但是如何在 MongoDB 中使用 .find 来搜索我的文章?
我的代码目前看起来像这样,它可以很好地搜索一个字符串,我只需要搜索 MULTIPLE:
// get all articles with phrase = ?
router.get('/articlesByPhrase', async (req, res) => {
const { person_id, phrase } = req.query;
try {
const articles = await Article.find({
person_id,
content: { $regex: phrase, $options: 'i' },
})
res.json(articles)
} catch (err) {
res.status(500).json({ message: err.message })
}
})
我想我需要使用我所有可能的字符串生成一个 RegExp,但我不太确定如何实现它。任何帮助表示赞赏!
【问题讨论】:
-
知道
establish可以成功的所有案例吗?或者在单词结束之前允许任何事情? -
有很多不同的解决方案。只要一个人不准确地知道用例及其条件/规范,那么简单的事情就可以了。
/^establish/(.startsWith('establish')的正则表达式)可能已经足够了。那么,字符串可能看起来像那个 "... 只需要搜索 MULTIPLE"
标签: javascript node.js mongodb