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 flash复制库类 Zero Clipboard
Jan 17 Javascript
jquery 笔记 事件
Nov 02 Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 Javascript
JavaScript数组合并的多种方法
May 22 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
JavaScript实现水平进度条拖拽效果
Jan 18 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
php和html的区别点详细总结
2019/09/24 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
python显示天气预报
2014/03/02 Python
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
枚举与#define宏的区别
2014/04/30 面试题
2014年元旦感言
2014/03/06 职场文书
高中语文课后反思
2014/04/27 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript
JS的深浅复制详细
2021/10/16 Javascript