【问题标题】:get model with atleast one relation object in mongoid在 mongoid 中获取至少一个关系对象的模型
【发布时间】:2011-11-18 04:40:38
【问题描述】:

我有一个 Person 对象,它有_many 家公司。我想找至少一家公司的人。 我现在能得到的是

Person.where(:company_ids.size => 1)

这将返回一个公司的所有人。但我需要类似的东西

Person.where(:company_ids.size.gte => 1)

但好像,这行不通。

解决方案:

很抱歉给您带来了麻烦,但发现对于以前创建的 objects ,我没有 company_ids ...因为我只是后来才添加的。我可以通过以下方式获得计数:

Person.where(:company_ids.exists => true).and("this.company_ids.length > 0") 

感谢大家的帮助。

【问题讨论】:

  • company_ids 是个人文档中的数组字段吗?
  • 是的 company_ids 是一个数组字段。下面提供的解决方案似乎不起作用。

标签: ruby-on-rails-3 mongodb ruby-on-rails-3.1 mongoid


【解决方案1】:

我假设 company_ids 是个人文档中的一个数组字段

恐怕没有办法指定大小的条件。但是有一个使用 javascript $where 表达式的解决方法

 db.person.find({$where: '(this.company_ids.length > 0)'})

我不确定如何在 mongoid 中传递这个表达式。

编辑

是的,你也可以用 mongoid 做到这一点

Person.where("$where" =>  'this.company_ids.length >0;' )

【讨论】:

    【解决方案2】:

    你应该可以做到:

    Person.where("this.company_ids.length > 3")

    【讨论】:

      【解决方案3】:

      你检查过吗

      Person.where("this.company_ids >=1")

      【讨论】:

      • 这行不通,OP 想要让拥有至少一家公司的人。所以你需要检查尺寸
      猜你喜欢
      • 2014-02-11
      • 2013-05-13
      • 2018-07-19
      • 1970-01-01
      • 2015-10-16
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多