您的位置:首页 > 数据库 > Mongodb

关于MongoDB的多条件查询问题

2017-08-12 00:00 351 查看
这两天用mongodb操作数据库的时候,碰到了多条件查询的问题,就是前端页面给出几个查询条件,用户任意选择一个或多个条件进行查询,后台匹配数据库后返回对应数据。

大家都知道mongodb的查询可以用find()方法,举个例子,页面上有三个查询条件:id,姓名,性别。



一般情况下后台是这样查询的

/*代码为程序片段,并不完整,只为了说明原理*/
var id=req.body.id;
var name=req.body.name;
var sex=req.body.sex;

Model.find({
id:id,
name:name,
sex:sex
}).then(function(userMsg){
data=userMsg;
res.json(data);
return;
});


这样子的话,假如id,name,sex三个搜索条件都有值传给后台,那么最后返回前端的data就是查询出来的对应数据。

但是多条件查询的话,你不能要求用户填写完所有条件,假如用户只用姓名去查询的话,后台获取到的有效数据就只有name了,id和sex的值都是“ ”,这时候用上面的方法查询就不会有结果了,因为数据库不会只根据name去匹配,而是根据name和id=”“,sex=”“去匹配,毫无疑问,这并不是用户想要的结果。

因为mongodb的find()并不能像sql那样,判断是否空值,然后拼接字符串语句进行查询,那要怎样查询呢,直接上代码

var id=req.body.id;
var name=req.body.name;
var sex=req.body.sex;
var Data={};

/*这样子就能动态的把不为空的数据添加到Data里面了*/
if(id!="") Data.id=id;
if(name!="") Data.name=name;
if(sex!="") Data.sex=sex;

Model.find(Data).then(
function(userMsg){
data=userMsg;
res.json(data);
return;
});


这样子进行查询的话,就会只根据不为空的值进行匹配,用户就能获得想要的数据了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 数据库