2015-05-24 49 views
0

我有一個帶有「名字」和「姓氏」字段的玩家合集。通過輸入字段構建對收集的mongodb查詢

我正在尋找上述集合,並有一個輸入字段進行搜索。這工作很好,以搜索名字$或姓氏。但我希望能夠在兩者上進行搜索。

我讀了另一個問題的答案,將兩者結合爲一個數組。我已經做到了,但它仍然搜索或。

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 = 「文本」 類= 「形式控制」 ID = 「搜索框」/>

一個示例性搜索是'大衛'應該返回所有的大衛。 「史密斯」應該返回所有史密斯 大衛·史密斯應該返回所有誰是「大衛」 +「史密斯」

它運行在KEYUP:

Template.searchbar.events({ 
'keyup #searchbox': function(evnt, tmpl){ 
    Session.set('search', $('#searchbox').val()); 
} 
}); 
+0

functionning你能更新你的問題,包括一個示例文件和「搜索」值? – JohnnyHK

+0

謝謝約翰尼,更新。 – nsdc20

回答

0

如何具有第三場「全名」和搜索它具有:

return Players.find({ fullname: { $regex: new RegExp(search, 'i')}}); 
0

如果我理解你還有:

比方說您要尋找的「馬丁」,在這兩個領域

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 = querryArr.map(function(queryStr){ 
    return new RegExp(queryStr,'i'); 
    } 
); 
return Players.find({$or:{[{firstname:{$in : queryArr}},{lastname:{$in : queryArr}}]}}); 

//編輯:未正確使用查詢字符串結尾有空白

+0

現在開始工作,但是我遇到了更多的流星事物,我猜...它可以工作,對第一個單詞,然後我按空格,它會再次顯示所有結果,直到輸入下一個字母爲止然後按第二個字過濾。任何想法? – nsdc20