【发布时间】:2013-10-23 15:29:07
【问题描述】:
我想在我的 Mongoid 文档中创建一个正则表达式字段,以便我可以有这样的行为:
MagicalDoc.create(myregex: /abc\d+xyz/)
MagicalDoc.where(myregex: 'abc123xyz')
我不确定这是否可行以及会产生什么样的影响。我怎样才能实现这种功能?
更新:我从Mongoid supports Regexp fields 的文档中了解到,但它没有提供如何查询它们的示例。
class MagicalDoc
include Mongoid::Document
field :myregex, type: Regexp
end
我也会接受纯 MongoDB 的答案。我可以找到一种将其转换为 Mongoid 语法的方法。
更新:感谢 SuperAce99 帮助找到此解决方案。将字符串传递给 Mongoid where 函数,它将创建一个 javascript 函数:
search_string = 'abc123xyz'
MagicalDoc.where(%Q{ return this.myregex.test("#{search_string}") })
%Q 是一种有助于转义引号的 Ruby 方法。
【问题讨论】:
标签: ruby regex mongodb mongoid