2013-10-08 93 views
0

我想從使用正則表達式的mongodb中獲取結果。例如,在搜索用戶名amitverma時,如果我在搜索框中輸入amit,我希望能夠獲得該結果。在Mongodb中使用正則表達式搜索查詢

我有搜索周圍的上網解決方案,大家似乎都明白了寫這樣的代碼工作:

var searchterm = req.body.name; 
     collection.find(
      { "username": new RegExp('/.*' + searchterm + '.*/') }, 
      [ 'username', 'status' ], 
      function(e, docs){ 
       console.log(e); 
       console.log(docs); 
       res.writeHead(200, {'content-type': 'text/json' }); 
       res.write(JSON.stringify({ 'docs' : docs })); 
       res.end('\n'); 
      } 
     ); 

我仍然無法得到它的工作。它給了我一個空陣列。此外,替換{username: searchterm}{ "username": new RegExp('/.*' + searchterm + '.*/') }後,我甚至不能得到字符串amitverma的結果,這意味着這個正則表達式的東西是失敗的。

+0

呵呵。對不起,沒有澄清。我在問爲什麼它不適合我?我需要做些什麼才能使它工作? – amit

+1

考慮到正則表達式在您的情況下區分大小寫。以及在您的收藏中顯示文件的例子。記住正則表達式可能非常慢,所以不要信任外部客戶端來定義它 - 有人可能會用非常繁重的regexp請求發送垃圾郵件,這可能會導致服務器崩潰。 – moka

回答

0

嘗試從RegExp()構造函數中刪除的斜線:

{ "username": new RegExp('.*' + searchterm + '.*') }, 

的斜線不應該存在的,除非你正在尋找兩個文本正斜槓。