Mongoose filtering (search) on multiple fields [duplicate]
You need to create query object by checking which parameter present or not
var queryCond = {}if(query.name){ queryCond.name={$regex:query.name,$options:"i"};}if(query.city){ queryCond.city=query.city;}if(query.type){ queryCond.type=query.type;}Location.find(queryCond);
In es6 you can do this nicely
let {type,city,name} = query;queryCond = { ...(type && {type}), ...(city && {city}), ...(name && {name:/regex here/}),}