2013-10-08 54 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 + '.*') }, 

的斜线不应该存在的,除非你正在寻找两个文本正斜杠。