sql >> Base de Datos >  >> NoSQL >> MongoDB

Rails 4 y mongoid:cree mediante programación una consulta con múltiples condiciones AND y OR

La consulta que desea generar es:

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

Un :field.in funciona igual que el campo field in (...) en SQL y eso es solo una forma abreviada de una declaración or. Eso facilita un poco las cosas, ya que solo tiene que agregar .in llamadas a los criteria claves cuyos valores son matrices, algo como esto:

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