2013-03-14 35 views
5

Tôi có một mô hình như thế nàyTruy vấn một trường mảng chứa băm trong mongoid

class User 
    include Mongoid::Document 
    field :c, as: :categories, type: Array 
end 

và tôi đang lưu trữ thông tin về nó như thế này:

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

Tôi không biết nếu tôi lạm dụng các loại mảng bằng cách lưu trữ băm trên đó, nhưng điều là mongodb không phàn nàn về nó.

Làm cách nào để truy vấn nội dung nào đó như Người dùng có tên danh mục là 'a' hoặc id danh mục cao hơn 2?

Cảm ơn bạn trước,

Trả lời

12

Tôi dường như đã tìm câu trả lời ... Đối với bất kỳ ai, tôi sẽ đăng bài ở đây.

User.where(c: {'$elemMatch' => {name: 'a'}}) 

Nó sẽ trả về tất cả người dùng có mảng danh mục có một hoặc nhiều phần tử có tên 'a'.

Các vấn đề liên quan