MongoDB多条件模糊查询示例代码
前言
模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配。如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询。在关系型数据中,通过SQL使用like‘%fens%'的语法。那么在mongodb中我们应该如何实现模糊查询的效果呢。
查询条件
| 关键字 | 说明 |
|---|---|
| $or | 或关系 |
| $nor | 或关系取反 |
| $gt | 大于 |
| $gte | 大于等于 |
| $lt | 小于 |
| $lte | 小于等于 |
| $ne | 不等于 |
| $in | 在多个值范围内 |
| $nin | 不在多个值范围内 |
| $all | 匹配数组中多个值 |
| $regex | 正则,用于模糊查询 |
| $size | 匹配数组大小 |
| $maxDistance | 范围查询,距离(基于LBS) |
| $mod | 取模运算 |
| $near | 邻域查询,查询附近的位置(基于LBS) |
| $exists | 字段是否存在 |
| $elemMatch | 匹配内数组内的元素 |
| $within | 范围查询(基于LBS) |
| $box | 范围查询,矩形范围 |
| $center | 范围查询,圆形范围 |
| $centerSphere | 范围查询,球形范围 |
| $slice | 查询字段集合中的元素(比如从第几个之后,第N到第M个元素) |
模糊查询
精准查询
//Mongodb数据库表
constsystemUser=require('../../models/user');
systemUser.find({name:'xiaoming'}).exec(function(err,rs){}
多条件模糊查询
//Mongodb数据库表
constsystemUser=require('../../models/user');
//前端传入的要查询的关键字
varname=req.query.name;
varpage=req.query.page||1;//当前页数
varlimitNums=10;//指定每一页查询的条数
page=parseInt(page);
varskipNums=(page-1)*limitNums;//跳过指定数量
//正则匹配i忽略大小写
varreg=newRegExp(name,"i");
var_filter={
//多字段匹配
$or:[
{name:{$regex:reg}},
{description:{$regex:reg}},
{owner:{$regex:reg}},
]
}
systemUser.find(_filter).
//跳过指定数量的数据
skip(skipNums).
//指定从MongoDB中读取的记录条数。
limit(limitNums).
sort({createTime:-1}).
exec(function(err,rs){}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。