Mongoid - 查询嵌套对象并与数组匹配

时间:2015-07-02 20:34:55

标签: ruby-on-rails mongodb nested mongodb-query mongoid4

我的模特

class Person
  embeds_many :skills, class_name: "PersonSkill"

class Project
  embeds_many :skills, class_name: "ProjectSkill"

class Skill
  belongs_to :tag # Tag class is irrelevant for my question I think
  field :tag_name # Assume it's synchronised with tag.name

class PersonSkill < Skill
  embedded_in :person

class ProjectSkill < Project
  embedded_in :project

现在我需要构建一些查询/范围。这个想法是项目有很多技能,项目经理希望能够找到拥有这些技能的人员名单

基本上:一些技能[技能A,技能B,技能C]与项目A相关联。项目经理希望找到人员

  • skillA AND skillB
  • skillA OR skillB
  • (技能A和技能B)或(技能A和技能C)

是否有可能定义一些很好的mongoid范围,让我可以轻松地做到这一点?

我查看了this question,我提出了以下范围,但它只涵盖了上面提到的3个案例中的一个。

scope :with_skills, ->(tag_ids){where('competences.tag_id' => {'$in' => tag_ids})}

0 个答案:

没有答案