Regex MongoDB正则表达式:在字符串中包含电子邮件

Regex MongoDB正则表达式:在字符串中包含电子邮件,regex,ruby-on-rails-3,mongodb,Regex,Ruby On Rails 3,Mongodb,假设我有一个字符串,比如 "Donald Trump <donald@trump.com>" "Art Job <art@job.com>" “唐纳德·特朗普” “艺术工作” 如何查找包含“”的每一行donald@trump.com“在Rails中使用MongoDB 谢谢您只能使用正则表达式执行此类搜索: 在您的情况下,您将无法以有效的方式进行搜索,除非您将数据反规范化并将您的电子邮件地址存储在文档的专用属性中 不知道Ruby,但每个驱动程序都应该支持正则表达式。

假设我有一个字符串,比如

"Donald Trump <donald@trump.com>" 
"Art Job <art@job.com>"
“唐纳德·特朗普”
“艺术工作”
如何查找包含“”的每一行donald@trump.com“在Rails中使用MongoDB


谢谢

您只能使用正则表达式执行此类搜索:

在您的情况下,您将无法以有效的方式进行搜索,除非您将数据反规范化并将您的电子邮件地址存储在文档的专用属性中

不知道Ruby,但每个驱动程序都应该支持正则表达式。

来自:


不过要小心。。。您不能在此查询中使用索引,因为您的正则表达式没有锚定到字符串的前面。

您使用的是哪个MongoDB库?蒙哥德?MongoMapper?看看你的驱动程序对正则表达式的支持。这不是规范化数据而不是反规范化吗?我试过了,但当电子邮件在“<>”中时,它似乎不起作用。可能是因为它在电子邮件和“<>”之间没有空格?使用未经过滤的参数可能真的很危险,直接在查询中。至少你要先用某种消毒剂消毒。我不知道mongo ruby驱动程序是否默认这样做。
search_string = params['search']

# Constructor syntax coll.find({"name" => Regexp.new(search_string)})

# Literal syntax coll.find({"name" => /#{search_string}/})