模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配。如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询。在关系型数据中,通过SQL使用像“%沼泽%”的语法。那么在mongodb中我们应该如何实现模糊查询的效果呢。
-
<李> mongodb模糊查询李>
<李> nodejs通过猫鼬的模糊查询
李>
我们打开mongodb,以名文字字段进行测试。
<>强精确查询强>
当{“名称”:“未来警察”}时,精确匹配到一条记录。
db.movies.find({“名称”:“未来警察'})
<强>模糊查询强>
{“名称”:/未来/},匹配到了多条记录。
db.movies.find({“名称”:/未来/})
MongoDB的模糊查询,其实是正则查询的一种。
注:在关系型数据中,单独有一个关键字像做模糊查询,如果不用,也可以在关系型数据中使用正则查询。
MongoDB官方介绍:http://docs.mongodb.org/manual/reference/operator/regex/
<强>官方举例:强>
db.collection。找到({字段:/acme。*公司/我}); db.collection。找到({:{$正则表达式:“极致。*集团”,选择美元:‘我’}});
希望实现的效果:
<强>下面说说如何用猫鼬进行模糊查询。强>
使用猫鼬访问mongodb,在,利用猫鼬让JSON数据直接插入或更新到mongodb一文中已经讲过。
我们对电影建模,并构造dao层。
<强>查询所有电影强>
MovieDAO.prototype。findByName=函数(查询、回调){ 电影。findOne(查询功能(呃,obj) { 回调(呃,obj); });};
通过传入查询对象,就可以进行查询。
接下来,构造查询对象
//代码片断 出口。电影=function(点播,res) { var查询={}; 如果(req.query.m2) { 查询['名称')=new RegExp (req.query.m2);//模糊查询参数 } 电影。findByName(查询、功能(呃,列表){ 返回res.render (admin/电影,{movieList:列出}); }); }
刚才我们已经分析了MongoDB的的模糊查询是通过正则表达式实现的,对应MongoDB中,可以直接使用的/. ./'斜杠。
但是在nodejs中,必须要使用正则表达式,来构建正则表达式对象。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。