mongoose 注意事项

Schema属性:如type、required、enum、lowercase、uppercase、trim、match等。

Scheme方法:如static、method、pre、set等。

这是今天手头项目中遇到的一个问题,关于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用于实现模糊查询。相关文档。使用示例如下:

{ : { $regex: /pattern/, $options: '' } }

{ : /pattern/ }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

}

);

你可能感兴趣的:(mongoose 注意事项)