我有一个简单的问题。我在我的应用程序的一个小搜索框后面更新功能,它根据他们的名字或姓氏搜索人。
它的工作方式很好,但我试图实际扩展它的功能,以包括一些常见的国际字符,例如í或ö。
使用名称Martin作为示例,为了与PHP的preg_match()函数一起使用,我将使用这样的正则表达式编写:@Mart[ií]n@i
以匹配Martin或Martín。
这样的括号表示法可以写入MongoDB正则表达式吗?我知道他们的正则表达式并不像PHP那样强大,但我没有看到以这种方式使用括号的任何方式。
谢谢!
答案 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,因此使用相同类型的查询应该可以达到你想要的效果。