我必须编写一个查询,作为查找位置的自动完成。 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()
中的外括号答案 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);
});
}