mongoose 多条件模糊查询的实现方法总结

这是今天手头项目中遇到的一个问题,关于mongoose如何实现类似于SQL中 `nick` LIKE '%keyword%' or `email` LIKE '%keyword%' 这种多条件模糊搜索的问题。 查阅了mongoose文档才得以实现,特此记录一下。
主要用到了query.$or和query.$regex这两个find参数。

query.$or用于实现多条件查询,其值为一个数组。相关文档

示例如下:

query.or([{ color: 'red' }, { status: 'emergency' }])1
query.$regex用于实现模糊查询。相关文档。使用示例如下:

{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: /pattern/<options> }1

通过以上两个参数就可以实现多条件模糊查询了。以User表为例,通过输入一个关键字,来匹配昵称或者邮箱与关键字相近的记录.

代码:

var keyword = this.params.keyword; //从URL中传来的 keyword参数
var reg = new RegExp(keyword, 'i'); //不区分大小写
var result = yield User.find(
 {
  $or : [ //多条件,数组
   {nick : {$regex : reg}},
   {email : {$regex : reg}}
  ]
 },
 {
  password : 0
 },
 {
  sort : { _id : -1 },
  limit : 100
 }
);

原文来自:http://www.smohan.net/blog/5051/

时间: 2025-01-27 15:53:29

mongoose 多条件模糊查询的实现方法总结的相关文章

MONGOOSE 多条件模糊查询的实现

这是今天手头项目中遇到的一个问题,关于mongoose如何实现类似于SQL中 nick LIKE '%keyword%' or email LIKE '%keyword%' 这种多条件模糊搜索的问题. 查阅了mongoose文档才得以实现,特此记录一下. 主要用到了query.$or和query.$regex这两个find参数. 其中query.$or用于实现多条件查询,其值是一个数组.相关文档 示例代码: query.or([{ color: 'red' }, { status: 'emerg

asp下实现多条件模糊查询SQL语句

条件|语句 作者:吕海鹏 来自:www.DeepTeach.com 摘要:这篇文章主要针对有一定asp编程经验和SQL语句基础的爱好者如何写模糊查询语句和多条件查询. 很多网友问到如何写模糊查询语句和多条件查询,今天网友小爱又问起了这个问题,刚好前几天给一个单位写个OA涉及到多条件模糊查询,那个查询比较多.专业名词也多,这里我整理了一下,假设以姓名.性别.电话号...作为数据库中的字段名. 通常写一个简单的模糊查询的SQL语句格式可以如下例: 说明:1.WHERE 关键词的后面跟着用来过滤数据的

在java List中进行模糊查询的实现方法_java

比如我有下面这样一个List,里面存放的是多个Employee对象.然后我想对这个List进行按照Employee对象的名字进行模糊查询.有什么好的解决方案么? 比如我输入的查询条件为"wang",那么应该返回只包含employee1的List列表. List list = new ArrayList(); Employee employee1 = new Employee(); employee1.setName("wangqiang"); employee1.s

SqlServer使用 case when 解决多条件模糊查询问题_MsSql

我们在进行项目开发中,经常会遇到多条件模糊查询的需求.对此,我们常见的解决方案有两种:一是在程序端拼接SQL字符串,根据是否选择了某个条件,构造相应的SQL字符串:二是在数据库的存储过程中使用动态的SQL语句.其本质也是拼接SQL字符串,不过是从程序端转移到数据库端而已. 这两种方式的缺点是显而易见的:一是当多个条件每个都可为空时,要使用多个if语句进行判断:二是拼接的SQL语句容易产生SQL注入漏洞. 最近写数据库存储过程的时候经常使用case when 语句,正好可以用这个语句解决一下以上问

SqlServer使用 case when 解决多条件模糊查询问题

我们在进行项目开发中,经常会遇到多条件模糊查询的需求.对此,我们常见的解决方案有两种:一是在程序端拼接SQL字符串,根据是否选择了某个条件,构造相应的SQL字符串:二是在数据库的存储过程中使用动态的SQL语句.其本质也是拼接SQL字符串,不过是从程序端转移到数据库端而已. 这两种方式的缺点是显而易见的:一是当多个条件每个都可为空时,要使用多个if语句进行判断:二是拼接的SQL语句容易产生SQL注入漏洞. 最近写数据库存储过程的时候经常使用case when 语句,正好可以用这个语句解决一下以上问

数据库-sqlite多条件模糊查询

问题描述 sqlite多条件模糊查询 在界面输入学生信息点击查询,在数据库中模糊查询输入字段的信息,如果界面上任何字段都不选择,就默认查询所有学生的信息.例如有学号,姓名,性别,地址字段 解决方案 根据选不选,来判断是否把这个条件放到where后面.http://www.360doc.com/content/13/0812/11/203579_306567031.shtml 解决方案二: 通过where来加条件判断,根据字段,格式化字符串where 姓名 = xxx等,如果没有输入,就全部 解决

PHP模糊查询的实现方法(推荐)_php实例

模式查询 1. SQL匹配模式 2. 正则表达式匹配模式(一般不推荐使用) SQL匹配模式 1.使用sql匹配模式,不能使用操作符=或!=,而是使用操作符LIKE或NOT LIKE: 2.使用sql匹配模式,MYSQL提供了2种通配符. %表示任意数量的任意字符(其中包括0个) _表示任意单个字符 3.使用sql匹配模式,如果匹配格式中不包含以上2种通配符中的任意一个,其查询的效果等同于=或!= 4.使用sql匹配模式,匹配时,不区分大小写 #查询用户名以某个字符开头的用户 #查询用户名以字符'

实现一个让用户自定义查询条件的查询用什么方法呢?

问题描述 实现一个让用户自定义查询条件的查询用什么方法呢? 解决方案 解决方案二:引用楼主yaoruimei的回复: 实现一个让用户自定义查询条件的查询用什么方法呢? 能说具体点吗?解决方案三:路过的表示没看懂什么意思解决方案四:例如:我们现在在做人事系统.涉及到人员的信息很多有姓名,性别等等.如果查询的时候可能不完全按所有条件查询需要用户自定义的选择人员属性中的几项进行查询.这个条件是用户自定义定的.例如按姓名查询:系统有一个地方出现姓名是等于什么或者包含什么,然后还可以针对这几个条件进行逻辑

PHP模糊查询的实现方法(推荐)

模式查询 1. SQL匹配模式 2. 正则表达式匹配模式(一般不推荐使用) SQL匹配模式 1.使用sql匹配模式,不能使用操作符=或!=,而是使用操作符LIKE或NOT LIKE: 2.使用sql匹配模式,MYSQL提供了2种通配符. %表示任意数量的任意字符(其中包括0个) _表示任意单个字符 3.使用sql匹配模式,如果匹配格式中不包含以上2种通配符中的任意一个,其查询的效果等同于=或!= 4.使用sql匹配模式,匹配时,不区分大小写 #查询用户名以某个字符开头的用户 #查询用户名以字符'