MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Rails 4 e mongoid:crea una query a livello di codice con più condizioni AND e OR

La query che vuoi creare è:

MyClass.where(
  :name.in   => [ 'John', 'Luke' ],
  :status.in => [ 'ACTIVE', 'SUSPENDED' ]
)

Un :field.in funziona come field in (...) in SQL e questa è solo una forma abbreviata per un'istruzione or. Questo rende le cose un po' più semplici dato che devi solo aggiungere .in chiamate ai criteria chiavi i cui valori sono array, qualcosa del genere:

query = criteria.each_with_object({}) do |(field, values), query|
  field = field.in if(values.is_a?(Array))
  query[field] = values
end
MyClass.where(query)