MongoDB字符串类型字段搜索匹配字符串数组

时间:2013-07-24 10:41:36

标签: ruby-on-rails mongodb ruby-on-rails-3.2 mongoid

Class Tweet
  field :lD,    as: :load_date,           type:Time
  field :t,     as: :text, type:String
end

Tweet.where({:text=>{ $in: ["champ","looser"]},:load_date.gte=>1.month.ago}) #OR
Tweet.where({:text=>{ $all: ["champ","looser"]},:load_date.gte=>1.month.ago}) #AND

in和all都可以应用于Array而不是String类型字段,就像我的情况一样。 因此可以在where子句中使用condition而不是迭代每个元素

1 个答案:

答案 0 :(得分:-1)

虽然$all只能应用于数组,但$in不是这种情况。

可能导致您的问题的原因是第一个查询只会完全匹配文本,您是否尝试过类似的内容:

Tweet.where({:text=>{ "$in" =>  [/champ/,/looser/]},:load_date.gte=>1.month.ago.utc})