Notes for a front-end developer, esyou.net

0%

MONGODB中模糊查询

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

到此,我们可以实现真正的模糊查询了!