Mongoid查询数组字段

时间:2013-11-08 20:21:07

标签: ruby-on-rails mongoid

我在Mongoid中有category type Array字段。

  

实施例。类别:[“val1”,“val2”,“val3”]

现在我想用`category:[“val1”,“val2”]查询这个模型,这样它就会返回我的合并

  

Model.where(category:“val1”)和Model.where(category:“val2”)

我可以为数组的每个元素单独执行此操作,但是我认为这会很慢,因为对于每个单独的元素,它将搜索所有文档。

我也试过Model.all_of({category: "val1"},{category: "val2"}).all,但这不起作用。

我该怎么做?

4 个答案:

答案 0 :(得分:26)

在mongoid中,有'$ in'运算符。所以你可以这样做:

Model.where(category: { '$in': ['val1', 'val2'] })

答案 1 :(得分:11)

您可以使用Criteria all_in来简化:

Model.all_in(category: ['val1','val2'])

答案 2 :(得分:7)

这有效

Model.where(:category.in => ['val1','val2'])

来自Mongo Docs

答案 3 :(得分:1)

或其他变体:

Model.in(category: ['val1','val2'])