ruby-on-rails - 数组中元素的 Mongoid 正则表达式

标签 ruby-on-rails regex mongodb mongoid

我有两个模型,一个用户和一个嵌入式模型消息

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/

相关文章:

ruby-on-rails - Rails 4.1 - LoadError : cannot load such file -- active_support/core_ext/string/encoding

php - 在文件夹中使用 .htaccess 隐藏查询字符串

javascript - 快一: What's wrong with this RegEx?

mongodb - 如何在 mongodb 聚合中将 ISO 日期转换为 unix 纪元

node.js - 外部模块中的模式在 Node.js 中不起作用

css - 如何设置 formtastic 单选按钮的样式

MySQL、Highcharts : “operand should contain 1 column(s):” error (follow up)

java - MongoDB Java驱动程序: How to insert into any collection from Java Driver

ruby-on-rails - 如何在助手中使用 form_tag?

java - 用于计算电子邮件地址中转义点的文本中的句子的正则表达式