您的位置:首页 > 编程语言 > Go语言

mongoose 多条件模糊查询的实现

2016-12-23 13:36 239 查看
作者: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

非特殊说明,本文版权归Smohan所有,转载请注明出处.

本文标题:mongoose 多条件模糊查询的实现

本文网址:http://www.smohan.net/blog/5051/.

本文标签:mongoose.mongod.nodejs.koa.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: