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中,为什么要尽可能使用局部变量?
Apr 06 Javascript
前台js调用后台方法示例
Dec 02 Javascript
动态载入js提高网页打开速度的方法
Jul 04 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
Dec 08 Javascript
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
JS面向对象之多选框实现
Jan 17 Javascript
使用Vue实现一个树组件的示例
Nov 06 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue实现简单图片上传
2020/06/30 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
理解Python垃圾回收机制
2016/02/12 Python
Python对象转JSON字符串的方法
2016/04/27 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Numpy 多维数据数组的实现
2020/06/18 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
python爬取招聘要求等信息实例
2020/11/20 Python
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
美发活动策划书
2014/01/14 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
面试通知单大全
2015/04/20 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript