查询mongoid中包含哈希的数组字段

cho*_*321 5 ruby ruby-on-rails mongodb mongoid

我有这样的模特

class User
  include Mongoid::Document
  field :c, as: :categories, type: Array
end
Run Code Online (Sandbox Code Playgroud)

我正在这样存储信息:

a = UserCheckin.new
a.c = [{id: rand(1000), name: 'a'}, {id: rand(1000), name: 'b'}, {id: rand(1000), name: 'c'}]
a.save
Run Code Online (Sandbox Code Playgroud)

我不知道我是否通过在其上存储哈希来滥用数组类型,但问题是mongodb并没有抱怨它.

如何查询类别名称为'a'或类别ID高于2的用户?

提前致谢,

cho*_*321 12

我似乎找到了答案......对于任何人,我会在这里发布.

User.where(c: {'$elemMatch' => {name: 'a'}})
Run Code Online (Sandbox Code Playgroud)

它将返回所有Users,其categories数组有一个或多个名为'a'的元素.