学堂 学堂 学堂公众号手机端

怎么在MongoDB中实现多条件模糊查询?相信很多没有经验的人对此束手无策

lewis 1年前 (2024-03-13) 阅读数 2 #技术

怎么在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){}

看完上述内容,你们掌握怎么在MongoDB中实现多条件模糊查询的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注博信行业资讯频道,感谢各位的阅读!

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门