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 相关文章推荐
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
javascript中parentNode,childNodes,children的应用详解
Dec 17 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
Jan 25 Javascript
jquery根据一个值来选中select下的option实例代码
Aug 29 Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
Sep 11 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 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计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
YII框架http缓存操作示例
2019/04/29 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
Python ftp上传文件
2016/02/13 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
关于Django Models CharField 参数说明
2020/03/31 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
一个C/C++编程面试题
2013/11/10 面试题
iostream与iostream.h的区别
2015/01/16 面试题
大学生志愿者感言
2014/01/15 职场文书
小松树教学反思
2014/02/11 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
超市周年庆活动方案
2014/08/16 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
python not运算符的实例用法
2021/06/30 Python