原博文出自于:  http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/      感谢!

Nodejs对MongoDB模糊查询

从零开始nodejs系列文章

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!

关于作者
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/nodejs-mongodb-regexp

前言

模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配。如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询。在关系型数据中,通过SQL使用like ‘%fens%’的语法。那么在mongodb中我们应该如何实现模糊查询的效果呢。

目录

  1. mongodb模糊查询
  2. nodejs通过mongoose的模糊查询

1. mongodb模糊查询

我们打开mongodb,以name文字字段进行测试。

精确查询
当{‘name’:’未来警察’}时,精确匹配到一条记录。


db.movies.find({'name':'未来警察'})

模糊查询
{‘name’:/未来/},匹配到了多条记录。


db.movies.find({'name':/未来/})

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的模糊查询

希望实现的效果:

下面说说如何用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,来构建正则表达式对象。

其实很简单,一层窗户纸。知道了实现原理,一切都变得很容易。

转载请注明出处:
http://blog.fens.me/nodejs-mongodb-regexp

转】Nodejs对MongoDB模糊查询的更多相关文章

  1. Python札记 -- MongoDB模糊查询

    最近在使用MongoDB的时候,遇到了使用多个关键词进行模糊查询的场景.竹风使用的是mongoengine库. 查了各种资料,最后总结出比较好用的方法.先上代码,后面进行详细说明.如下: #!/usr ...

  2. MongoDB 模糊查询,及性能测试

    var mongodb = new MongoClient("mongodb://127.0.0.1:27017");//MongoServer.Create();//创建链接 v ...

  3. MongoDB模糊查询

    模糊查询简介MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能.模糊查询可以使用$regex操作符或直接使用正则表达式对象. MySQL  MongoDB select * from s ...

  4. MongoDB 模糊查询like

    1.LIKE模糊查询userName包含A字母的数据(%A%)-- SQL:SELECT * FROM UserInfo WHERE userName LIKE "%A%" -- ...

  5. koa 基础(二十一)nodejs 操作mongodb数据库 --- 查询数据

    1.app.js /** * nodejs 操作mongodb数据库 * 1.安装 操作mongodb * cnpm install mongodb --save * 2.引入 mongodb 下面的 ...

  6. MongoDB模糊查询,以及MongoDB模糊查询时带有括号的情况

    模糊查询 记录如下: { "_id" : ObjectId("5c3d486d24aa9a000526367b"), "name" : &q ...

  7. MongoDB模糊查询 工具

    {"Exception":{$regex:"定时发送邮件"}}    //模糊查询条件 {"DateTime":-1}         // ...

  8. NodeJS利用mongoose模糊查询MongoDB

    在Node.js中,直接硬编码可以 Posts.where('title',/答案/); 但是 通过 字符串构造 不行 var qs = '/'+req.query.search+'/'; Posts ...

  9. 【NodeJS】替换模糊查询字符里包含的正则关键字

    问题:正则匹配时字符串中包含了一些特殊字符,导致查询失败 例如,下面的字符包含了( 和 ),这在正则中属于特殊字符 (-)-magnocurarine 正则中的特殊字符如下图 思路: 1.映射查询字符 ...

随机推荐

  1. OpenCV图像处理篇之图像平滑

    图像平滑算法 图像平滑与图像模糊是同一概念,主要用于图像的去噪.平滑要使用滤波器.为不改变图像的相位信息,一般使用线性滤波器,其统一形式例如以下: %20\Large%20g(i,j)=\sum_{k ...

  2. Mac Chrome-点击书签页在新的标签打开之方法

    PS:一直使用的是Firefox,但是现在Firefox有些不能满足我现在的需求,所以下载了chrome.可是当使用chrome时发现有一个很实用的功能它不能设置,这个让我很抓狂. 当点击标签时不能新 ...

  3. 偶遇HiWork,请不要擦肩而过

    非常多朋友可能都不了解HiWork,在这里介绍一下. HiWork是基于云存储的团队即时沟通协作平台,主要针对于中小团队及中小企业的即时沟通,让团队沟通更顺畅.在HiWork平台可即时得知所使用第三方 ...

  4. webService和RMI

    1.请求: servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的ht ...

  5. How to check HTML version of any website

    http://howtocheckversion.com/check-html-version-website/ Check HTML version via W3C W3 Consortium ha ...

  6. POJ - 1422 Air Raid(DAG的最小路径覆盖数)

    1.一个有向无环图(DAG),M个点,K条有向边,求DAG的最小路径覆盖数 2.DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数 3. /* 顶点编号从0开始的 邻接矩阵(匈牙利算 ...

  7. linux下Apache默认安装路径

    如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.conf  可以修改相关的访问路径及配置Apache模块路径:/usr/ ...

  8. 并不对劲的bzoj3277

    陈年老坑 题意大概是有n个字符串,要求出每一个字符串的所有子串(不包括空串)在所有字符串(包括自身)中出现次数不少于k的有多少个.n,k,字符串总长<=100000. 如果只有一个串的话,非常好 ...

  9. NABCD项目需求报告

    项目:记账小账本 N:need 需求 根据我们的调查,很多人虽然知道记账有很多的好处,但是因为种种的原因,我们都没能养成记账的好习惯,所以我们所做的记账小软件,说到底是一个行为养成类的软件,而这类软件 ...

  10. 小程序-demo:小程序示例-page/common

    ylbtech-小程序-demo:小程序示例-page/common 1.返回顶部 0.     1. 2. pages/common返回顶部 1. -lib --weui.wxss /*! * we ...