通过输入字段在集合上构造mongodb查询
我有一个带有“名字”和“姓氏”字段的玩家集合 我希望搜索上述集合,并有一个输入字段进行搜索。搜索名字$或姓氏很好。但我希望能够在这两个网站上搜索 我读了另一个问题的答案,将两者组合成一个数组。我已经这样做了,但它仍然搜索或通过输入字段在集合上构造mongodb查询,mongodb,meteor,Mongodb,Meteor,我有一个带有“名字”和“姓氏”字段的玩家集合 我希望搜索上述集合,并有一个输入字段进行搜索。搜索名字$或姓氏很好。但我希望能够在这两个网站上搜索 我读了另一个问题的答案,将两者组合成一个数组。我已经这样做了,但它仍然搜索或 return Players.find({playerSearch_index:new RegExp(search,'i')); 样本文件: { 名字:“大卫”, 姓:“史密斯”, 球员搜索索引:[大卫,史密斯], 地点:“伦敦”, 国家:“英格兰”, 分数:0 } 只需
return Players.find({playerSearch_index:new RegExp(search,'i'));
样本文件:
{
名字:“大卫”,
姓:“史密斯”,
球员搜索索引:[大卫,史密斯],
地点:“伦敦”,
国家:“英格兰”,
分数:0
}
只需通过
搜索示例为“David”,它应返回所有David。
“史密斯”应归还所有史密斯
David Smith应返回所有“David”+“Smith”
它在keyup上运行:
Template.searchbar.events({
“keyup#searchbox”:函数(evnt、tmpl){
Session.set('search',$('#searchbox').val();
}
});
使用第三个字段“fullname”并使用以下内容进行搜索如何:
return Players.find({ fullname: { $regex: new RegExp(search, 'i')}});
如果我很了解你: 假设您想在这两个字段中查找“martin”
var query = new RegExp(search,'i');
return Players.find({$or:{[{firstname:query},{lastname:query}]}});
如果你想在这两个领域都寻找“约翰·多伊”,你可以
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}}]}});
//编辑:使用带有尾随空格的查询字符串时功能不正常能否更新您的问题以包含示例文档和
搜索
值?谢谢Johnny,已更新。现在开始工作,但我遇到了其他更像流星的东西,我想……它可以工作,在第一个单词上,然后按空格键它会再次显示所有的结果,直到下一个字母被输入,然后按第二个单词过滤。你知道吗?