如何找到属性foo或bar等于查询值的对象?

时间:2014-06-01 15:28:55

标签: ruby-on-rails mongodb mongoid querying

我搜索谷歌并查看了文档,但我没有发现这个例子。

我有嵌入子项的这个对象:

{
  teacher: "Balthazar",
  students: [
    { name: 'Wilfred', sibling: 'Cordelia' },
    { name: 'Mortimer', sibling: 'Arthur' },
    { name: 'Cordelia', sibling: 'Wilfred' },
    { name: 'Arthur' sibling: 'Mortimer' },
  ]
}

我想找到Balthazarname位于sibling的{​​{1}}的学生。我让它以这种方式工作:

['Wilfred', 'Cordelia', 'foo']

但是,有一种更清洁的方式来链接标准吗?我尝试过链接,但它不起作用。它产生一个criteria_a = balthazar.students.in(name: ['Wilfred', 'Cordelia']) criteria_b = balthazar.students.in(sibling: ['Wilfred', 'Cordelia']) criteria_a << criteria_b 交叉点,而不是AND

OR

所以,简单来说,这个查询是balthazar.students. .in(name: ['Wilfred', 'Corderial']) .in(sibling: ['Wilfred', 'Corderial']) 。但我想要name is in array **AND** sibling is in array

1 个答案:

答案 0 :(得分:1)

您可以使用any_of

balthazar.students.any_of({name: ['Wilfred', 'Cordelia']}, {sibling: ['Wilfred', 'Cordelia']})