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 学习笔记(十一)
Jan 19 Javascript
关于JavaScript中var声明变量作用域的推断
Dec 16 Javascript
JavaScript之自定义类型
May 04 Javascript
javascript的原生方法获取数组中的最大(最小)值
Dec 19 Javascript
JS文本框默认值处理详解
Jul 10 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
关于原生js中bind函数的简单实现
Aug 10 Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 Javascript
详解vue express启动数据服务
Jul 05 Javascript
mui框架 页面无法滚动的解决方法(推荐)
Jan 25 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 Javascript
基于Vue插入视频的2种方法小结
Apr 02 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网上商城购物车设计代码分享
2012/02/15 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
JavaScript Split()方法
2015/12/18 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python对象体系深入分析
2014/10/28 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Python pymongo模块用法示例
2018/03/31 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
新闻编辑自荐书范文
2014/02/12 职场文书
求职信模板
2014/05/23 职场文书
师范生见习报告
2014/10/31 职场文书
初中重阳节活动总结
2015/05/05 职场文书
初中思想品德教学反思
2016/02/24 职场文书