我有两个模型,一个用户和一个嵌入式模型消息
class User
include Mongoid::Document
embeds_many :messages
end
class Message
include Mongoid::Document
field :keywords, :type => Array
end
我正在尝试做类似的事情:
u = User.last
u.messages.where(:keywords => /sometext/).first
但是这不会返回任何内容,如果字段不是 Array
类型并且是 String
,则正则表达式似乎可以正常工作。我怎样才能用 Mongoid 做这样的事情?
我还应该提到这个 Mongo 查询工作正常:
db.users.find({"messages.keywords" : /index/ })
最佳答案
如果您正在处理数组,则使用“in”。
users = User.where("messages.keywords".in => [/sometext/])
如果我没记错的话应该可以。
亚历克斯
User.where("messages.keywords".in => [/sometext/]).each do |user|
message_collection_for_user = user.messages.where("keywords".in => [/sometext/])
end
现在您有了消息并且可以执行任何操作,但您无法获取所有用户的消息集合,这种方式行不通。
关于ruby-on-rails - 数组中元素的 Mongoid 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6082629/