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 Event学习第六章 事件的访问
Feb 07 Javascript
js 居中漂浮广告
Mar 21 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
May 15 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
Apr 25 Javascript
uin-app+mockjs实现本地数据模拟
Aug 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 EOT定界符的使用详解
2008/09/30 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
JavaScript仿京东轮播图效果
2021/02/25 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
社区学雷锋活动策划方案
2014/01/30 职场文书
创业计划书如何编写
2014/02/06 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
学生安全承诺书
2014/05/22 职场文书
安全口号大全
2014/06/21 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
房屋所有权证明
2015/06/19 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python