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 相关文章推荐
JavaScript中“+=”的应用
Feb 02 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
深入理解JS中的substr和substring
Apr 26 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
Nov 07 Javascript
解决html input验证只能输入数字,不能输入其他的问题
Jul 21 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
小程序实现tab标签页
Nov 16 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实现mysql同步的实现方法
2009/10/21 PHP
PHP 数组基础知识小结
2010/08/20 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
js面向对象编程总结
2017/02/16 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python网络编程详解
2017/10/31 Python
Python中optparser库用法实例详解
2018/01/26 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
python画双y轴图像的示例代码
2019/07/07 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
python eventlet绿化和patch原理
2020/11/21 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
2015年安全保卫工作总结
2015/05/14 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python实现简单得递归下降Parser
2022/05/02 Python