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 UrlDecode函数代码
Jan 09 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
May 04 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
理解Javascript的call、apply
Dec 16 Javascript
Angularjs过滤器使用详解
May 25 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 Javascript
利用Node.JS实现邮件发送功能
Oct 21 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
微信小程序实现的picker多级联动功能示例
May 23 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
详解JS ES6编码规范
May 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的类树(支持无限分类)
2006/10/09 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Python之字典对象的几种创建方法
2020/09/30 Python
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
英语专业学生个人求职信范文
2014/01/06 职场文书
六查六看剖析材料
2014/02/15 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
学历证明样本
2015/06/16 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
安全生产会议制度
2015/08/06 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers