MONGOOSE 多条件模糊查询的实现

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

主要用到了query.$orquery.$regex这两个find参数。

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

示例代码:

query.or([{ color: 'red' }, { status: 'emergency' }])

query.$regex用于实现模糊查询。相关文档

示例代码:

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

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

示例代码:

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

MONGOOSE 多条件模糊查询的实现的相关文章

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

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

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

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

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

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

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 语句,正好可以用这个语句解决一下以上问

根据条件模糊查询完之后怎么清空文本框?

问题描述 点击右面红色菜单 之后 出现 右面,然后在文本框输入值进行模糊查询,查询完成之后,再点击右边的红色菜单,右边页面依然还是模糊查询之后的数据,不是全部的数据的.如何解决? 问题补充:还有就是 我在javascript 里面把文本框的值 给清空了,但是查看源码的时候还是可以看到值,document.getElementById('d1').value=''; <body onload="on_load()"> 这样清空的,这是不是像第一位回答者说的那样的查询条件放入s

select-mysql 在查询的时候能不能同时带模糊查询和条件查询?

问题描述 mysql 在查询的时候能不能同时带模糊查询和条件查询? 比如: select * from t_user where name = '张三' and sex like '%妖%' 解决方案 模糊匹配也是一种条件啊,,所以是可以的,, 解决方案二: 可以 select name,sex from t_user where name = "张三" and sex like '%妖%' 解决方案三: 当然可以,and相当于要求两个条件都满足才能返回结果 解决方案四: 肯定是可以的

SQL多条件查询,模糊查询,模糊多条件查询

临近毕业答辩,最近老有同学问多条件查询,模糊查询其实没那么复杂.别想的复杂了. 在企业应用程序开发中经常遇到,查询数据库的时候,查询的where条件可能不止一个,可能没有条件,也有可能至少一个或者多个条件,遇到这种情况,今天看到论坛上有人用C#的 if 语句拼接,这样解决可以是可以,不过显得太过累赘也没有必要,其实,一句固定的 sql 语句句型即可解决:  关于多条件查询 select * from t where (a = @a or @a is null) and (b = @b or @b

jsp问题-jsp中模糊查询,后台没有出错,为什么实现不了?

问题描述 jsp中模糊查询,后台没有出错,为什么实现不了? 点击查找只是刷新页面,后台没有问题,但是又实现不了 具体代码: <% request.setCharacterEncoding("utf-8"); %> <%! private static final String DBDRIVER ="org.gjt.mm.mysql.Driver"; private static final String DBURL ="jdbc:mysq