mongodb中实现模糊查询可以直接使用正则表达式,官方也给出了reg的查询方式,首先我们直接来实现下基本的模糊查询,代码很简单,也非常实用,如果你已经创建了一个数据库,并且里面包含了数据,那么你可以直接在命令行使用如下命令进行模糊查询:
db.col.find({name:/小强/})
我们可以看到“/小强/”,这个就是正则表达式了,我们也可以直接使用/^小强/等等正则表达式,都可以查询到相关数据。
但是问题来了,我们在写程序的时候,用户可能查询的是一个变量,这个值并不是固定的,因此使用这样的方法,仅能固定一个关键词。我之前试过以下方法,但是并没有通过
1 | var query="/"+key+"/"; |
2 | User.find({name:query},function(res,req,next){ |
3 | ..... |
4 | }); |
这种方式,我总是无法获取到我想要的数据,而且返回的都是空,最终我发现了问题,应该是我所定义的query是一个string格式,而并不是正则表达式,因此这种方法是不可行的,大家也不要再使用这样的方式了。下面我将直接使用RegExp方式进行查询。这也是最终能够真正实现模糊查询的方法。
1 | var keyword=req.params.keyword; |
2 | var key = {'name': new RegExp(keyword)}; //模糊查询参数 |
3 | Job.find(key,function (err, jobs) { |
4 | if (err) { |
5 | return res.send(err); |
6 | } |
7 | res.json(jobs); |
8 | }) |
到此,我们可以实现真正的模糊查询了!