通过输入字段在集合上构造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,已更新。现在开始工作,但我遇到了其他更像流星的东西,我想……它可以工作,在第一个单词上,然后按空格键它会再次显示所有的结果,直到下一个字母被输入,然后按第二个单词过滤。你知道吗?