带括号的MongoDB正则表达式

时间:2014-07-18 17:00:04

标签: php regex mongodb

我有一个简单的问题。我在我的应用程序的一个小搜索框后面更新功能,它根据他们的名字或姓氏搜索人。

它的工作方式很好,但我试图实际扩展它的功能,以包括一些常见的国际字符,例如í或ö。

使用名称Martin作为示例,为了与PHP的preg_match()函数一起使用,我将使用这样的正则表达式编写:@Mart[ií]n@i以匹配Martin或Martín。

这样的括号表示法可以写入MongoDB正则表达式吗?我知道他们的正则表达式并不像PHP那样强大,但我没有看到以这种方式使用括号的任何方式。

谢谢!

1 个答案:

答案 0 :(得分:1)

MongoDB使用Perl兼容的正则表达式(PCRE' s)。您可以使用括号表示法为此查询编写正则表达式。在您给出的示例中,要查找具有给定名称Martín的用户,您可以执行以下操作:

> db.users.insert({name:'Martín'});
WriteResult({ "nInserted" : 1 })
> db.users.find({name:{$regex:'Mart[ií]n'}});
{ "_id" : ObjectId("..."), "name" : "Martín" }

这将返回您想要的记录。

PHP使用PCRE,因此使用相同类型的查询应该可以达到你想要的效果。