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