Nodejs + MongoDB模糊搜索

MongoDB中模糊查询要使用正则表达式,使用nodejs和mongodb实现一个通过搜索框对数据库进行搜索的功能,一开始直接用的findOne()方法

1
2
3
Corpus.findOne({name: '/'+req.query.name.replace(/"/g, '')+'/'}, function (err, Corpus) {
...
})

很奇怪,这种方式并查不到东西,把name对应的值写死后,却可以正常查到内容,但是req.query.name是可以正常获取到前台输入的内容的。

解决:

在nodejs中要用RegExp构建正则表达式对象

1
2
3
4
5
6
7
let CorpusSearch = req.query.name.replace(/"/g, '')
let str = ".*"+CorpusSearch+".*$"
let reg = new RegExp(str)

Corpus.find({name:{$regex:reg, $options: 'i'}}, function (err, Corpus) {
...
})
阅读更多