2013-03-14 9 views
5

Ho un modello come questoInterrogare un campo di matrice che contiene gli hash in mongoid

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

e sto memorizzazione di informazioni su di esso come questo:

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

Non so se sto abusando il tipo di array memorizzando hash su di esso, ma la cosa è che mongodb non si lamenta di ciò.

Come faccio a chiedere una domanda come Utenti in cui il nome della categoria è 'a' o l'ID della categoria è superiore a 2?

Grazie in anticipo,

risposta

12

Sono sembrano avere trovare la risposta ... Per chiunque a sinistra, mi post qui.

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

si tornerà tutti gli Utenti, la cui matrice categorie ha uno o più elementi con un nome di 'a'.

Problemi correlati