【问题标题】:Active Record Query where value in array fieldActive Record 查询数组字段中的值
【发布时间】:2012-08-06 23:48:25
【问题描述】:

我在 Rails 3 的 MongoDB 数据库中有一个名为“Stat”的表。

在该表中,有一个名为 "services" 的数组字段。

我想查找所有具有包含值 "lights" 的服务数组的 Stats。

我想做这样的事情:

@stats = Stat.all
@stats1 =  @stats.where("services contains lights")
Rails.logger.info "result:  #{@stats1.count}  " 

我尝试了各种方法并在 Google 上进行了广泛搜索,找到了一些线索,但似乎没有任何效果。我有四个记录应该匹配这个查询,但上面返回一个零集。

我想在 rails 3 / mongo 中做的事情可能吗?

【问题讨论】:

  • 您使用什么Object Mapper 访问MongoDB?如果您使用的是原生 Ruby 驱动程序,它不会实现 ActiveRecord;您将改为在集合上执行find()

标签: ruby-on-rails-3 mongodb activerecord


【解决方案1】:

好的,我找到了这个问题的答案:

@stats =  @stats.where(:services.in =>['lights'] )

我还发现,倒数是:

@stats =  @stats.where(:services.nin =>['lights'] )

nin 而不是in

【讨论】:

  • 我知道这是旧的,但也许你可以链接到你找到答案的地方?
  • 我实际上认为我当时通过询问我的一位同事得到了答案,然后摆弄它以找到“nin”变体。
【解决方案2】:

试试这个,

@stats = Stat.all

@stats1 =  @stats.where("'lights' = ANY (services)")

【讨论】:

    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多