mongoose 多条件模糊查询的实现

作者:Smohan阅读:1972更新于2016-05-08 23:28


这是今天手头项目中遇到的一个问题,关于 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 2

通过以上两个参数就可以实现多条件模糊查询了。以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
	}
);
 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值