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 flow 的一个bug详解
Sep 17 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 Javascript
vue登录路由验证的实现
Dec 13 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 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中模拟POST传递数据的两种方法分享
2011/09/16 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
Python NumPy库安装使用笔记
2015/05/18 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python定义具名元组实例操作
2021/02/28 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
师范毕业生自我鉴定
2014/01/15 职场文书
房产代理公证处委托书
2014/04/04 职场文书
党员承诺书格式
2014/05/21 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
研究生导师评语
2014/12/31 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
PHP实现两种排课方式
2021/06/26 PHP