Mongoose正则表达式搜索有两个条件

时间:2016-09-19 07:26:19

标签: node.js mongodb express mongoose

我必须编写一个查询,作为查找位置的自动完成。 else语句可以很好地找到合适的国家,但是当用户写出"德国,柏林"例如,该算法会抛出其他可能拥有名为" Berlin"的城市的国家。我需要它来搜索位于例如"德国"的城市。

只是为了清楚说明当搜索参数字符串中有逗号时,flag变量为true。然后它在国家和城市分裂。

if(flag){
    World.findOne().or([{name:{$regex:country}},{cities: {$regex:city}}]).exec(function (err, users) {
                if (err) return console.error(err);
                console.log(users);
                res.send(users);
            }); 
}else{
    World.findOne({name:{$regex:val}}, {cities: {$slice: 10}}).exec(function (err, users) {
                if (err) return console.error(err);
                console.log(users);
                res.send(users);
            }); 
}

我也尝试了这个,但它抛出了一个编译错误:

if(flag){
    World.findOne({{country:{$regex:country}},{cities: {$regex:city}}}).exec(function (err, users) {
                if (err) return console.error(err);
                console.log(users);
                res.send(users);
            });

尝试删除findOne()

中的外括号

1 个答案:

答案 0 :(得分:0)

我认为你没有给出正确的query价值。

试试这个

if (flag) {
  World.find({
    country: {
      $regex: country
    },
    cities: {
      $regex: city
    }
  }).exec(function(err, users) {
    if (err) return console.error(err);
    console.log(users);
    res.send(users);
  });
}