2013-03-14 10 views
5

enthält habe ich ein Modell wie dieseein Array-Feld Abfragen, die Hash-Wert in mongoid

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

und ich darauf, wie diese Informationen an Speicherung:

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

Ich weiß nicht, ob ich mißbrauchen bin der Array-Typ durch Speichern von Hashes darauf, aber die Sache ist, dass Mongodb sich nicht darüber beschweren.

Wie kann ich etwas wie Benutzer abfragen, wenn der Kategorie-Name 'a' oder die Kategorie-ID höher als 2 ist?

Vielen Dank im Voraus,

Antwort

12

Ich habe scheint die Antwort zu haben zu finden ... Für alle, links, ich werde es hier posten.

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

Es wird alle Benutzer zurückgeben, Array, deren Kategorien ein oder mehr Elemente mit dem Namen ‚a‘.