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 相关文章推荐
<script defer> defer 是什么意思
May 10 Javascript
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
React利用插件和不用插件实现双向绑定的方法详解
Jul 03 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
Jul 13 Javascript
详解webpack的配置文件entry与output
Aug 21 Javascript
小程序实现图片移动缩放效果
May 26 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读取目录下所有文件的代码
2008/01/07 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
js 省地市级联选择
2010/02/07 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
JS如何生成动态列表
2020/09/22 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
Python 数据结构之堆栈实例代码
2017/01/22 Python
Python自定义线程池实现方法分析
2018/02/07 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python基础之文件读取的讲解
2019/02/16 Python
python实现各种插值法(数值分析)
2019/07/30 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
工作检讨书大全
2015/01/26 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
实习护士自荐信
2015/03/25 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs