我有一个带有'名字'和'姓氏'字段的球员系列。
我正在寻找上面的集合,并有一个输入字段进行搜索。这可以正常搜索名字$或姓氏。但我希望能够在两者上搜索。
我读了另一个问题的答案,将两者合并为一个数组。我已经完成了,但它仍然搜索或。
return Players.find({ playerSearch_index: new RegExp(search, 'i')};
示例文档:
{
firstName: "David",
lastName: "Smith",
playerSearch_index: [David,Smith],
location: "London",
Country: "England",
score: 0
}
搜索只是通过< input type =“text”class =“form-control”id =“searchbox”/>
示例搜索是'David',它应该返回所有Davids。 '史密斯'应该归还所有史密斯 大卫史密斯应该归还所有'大卫'+'史密斯'
它在keyup上运行:
Template.searchbar.events({
'keyup #searchbox': function(evnt, tmpl){
Session.set('search', $('#searchbox').val());
}
});
答案 0 :(得分:0)
如何使用第三个字段“fullname”并搜索:
return Players.find({ fullname: { $regex: new RegExp(search, 'i')}});
答案 1 :(得分:0)
如果我理解你的话:
让我们说你想找"马丁"在两个领域
var query = new RegExp(search,'i');
return Players.find({$or:{[{firstname:query},{lastname:query}]}});
如果你想寻找" john doe"在这两个领域,你都会做到
var queryArr = value.split(" ");//value is "john doe"
//we delete the empty string "" or we will get a * (all) query
queryArr = _.compact(queryArr);
queryArr = queryArr.map(function(queryStr){
return new RegExp(queryStr,'i');
}
);
return Players.find({$or:{[{firstname:{$in : queryArr}},{lastname:{$in : queryArr}}]}});
// edit:使用尾随空格的查询字符串无法正常运行