我有一个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")
感谢大家的帮助。
答案 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")