在mongoid中获取至少一个关系对象的模型

时间:2011-11-18 04:40:38

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

我有一个Person对象,其中有很多公司。我想让这个人至少有一家公司。 我现在能得到的是

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

这将使所有人返回一家公司。但我需要像

这样的东西
Person.where(:company_ids.size.gte => 1)

但似乎这不起作用。

解决方案:

抱歉所有的麻烦,但发现使用以前创建的对象,我没有company_ids ...因为我之前只添加了。我可以通过以下方式获得统计数据:

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

感谢大家的帮助。

3 个答案:

答案 0 :(得分:4)

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

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

的解决方法
 db.person.find({$where: '(this.company_ids.length > 0)'})

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

修改

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

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

答案 1 :(得分:4)

你应该可以这样做:

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

答案 2 :(得分:3)

你有没有检查过

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