2016-09-19 63 views
0

我必须编写一个查询,作为查找位置的自动完成。 else语句在寻找合适的国家方面效果良好,但是当用户编写“德国,柏林”时,该算法抛出了其他可能拥有“柏林”城市的国家。我需要它只搜索位于例如“德国”的城市。有两个条件的猫鼬正则表达式搜索

只是为了清楚标志变量在搜索参数字符串中有一个逗号时变为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()

+0

请告诉我的错误你好吗? – abdulbarik

+0

关于第二个代码,我得到了 World.findOne({{country:{$ regex:country}},{cities:{$ regex:city}}})。ex ^ SyntaxError:意外的标记{ –

回答

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); 
    }); 
} 
+0

Thanks,现在就像一个魅力! –

+0

太棒了!很高兴帮助你 – abdulbarik