Node.js对MongoDB数据库实现模糊查询的方法


Posted in Javascript onMay 03, 2017

前言

模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配。如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询。在关系型数据中,通过SQL使用like ‘%fens%'的语法。那么在mongodb中我们应该如何实现模糊查询的效果呢。

目录

  • mongodb模糊查询
  • nodejs通过mongoose的模糊查询

1. mongodb模糊查询

我们打开mongodb,以name文字字段进行测试。

精确查询

当{‘name':'未来警察'}时,精确匹配到一条记录。

db.movies.find({'name':'未来警察'})

Node.js对MongoDB数据库实现模糊查询的方法

模糊查询

{‘name':/未来/},匹配到了多条记录。

db.movies.find({'name':/未来/})

Node.js对MongoDB数据库实现模糊查询的方法

MongoDB的模糊查询,其实是正则查询的一种。

注:在关系型数据中,单独有一个关键字like做模糊查询,如果不用like,也可以在关系型数据中使用正则查询。

MongoDB官方介绍:http://docs.mongodb.org/manual/reference/operator/regex/

官方举例:

db.collection.find( { field: /acme.*corp/i } );
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );

2. nodejs通过mongoose的模糊查询

希望实现的效果:

Node.js对MongoDB数据库实现模糊查询的方法

下面说说如何用mongoose进行模糊查询。

使用mongoose访问mongodb,在 利用Mongoose让JSON数据直接插入或更新到MongoDB 一文中已经讲过。

我们对Movie建模,并构造dao层。

查询所有电影

MovieDAO.prototype.findByName = function(query, callback) {
 Movie.findOne(query, function(err, obj){
 callback(err, obj);
 });
};

通过传入query对象,就可以进行查询。

接下来,构造query对象

//代码片断
exports.movie = function(req, res) {
 var query={};
 if(req.query.m2) {
 query['name']=new RegExp(req.query.m2);//模糊查询参数
 }

 Movie.findByName (query,function(err, list){
 return res.render('admin/movie', {movieList:list});
 });
}

请注意:刚才我们已经分析了MongoDB的的模糊查询是通过正则表达式实现的,对应mongodb中,可以直接使用 ‘/../' 斜杠。

但是在nodejs中,必须要使用RegExp,来构建正则表达式对象。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
静态的动态续篇之来点XML
Aug 15 Javascript
javascript document.execCommand() 常用解析
Dec 14 Javascript
Jquery从头学起第四讲 jquery入门教程
Aug 01 Javascript
js模拟hashtable的简单实例
Mar 06 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
Mar 02 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
vue element中axios下载文件(后端Python)
May 10 Javascript
js Math数学简单使用操作示例
Mar 13 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
May 03 #Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 #Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 #Javascript
javascript过滤数组重复元素的实现方法
May 03 #Javascript
JS实现图片点击后出现模态框效果
May 03 #Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 #Javascript
javascript 判断一个对象为数组的方法
May 03 #Javascript
You might like
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
javascript 中关于array的常用方法详解
2017/05/05 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
Python程序退出方式小结
2017/12/09 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
Python语言进阶知识点总结
2019/05/28 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
行政专员求职信范文
2014/05/03 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android