MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Rails 4 et mongoid :créez par programmation une requête avec plusieurs conditions ET et OU

La requête que vous souhaitez créer est :

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

Un :field.in fonctionne de la même manière que field in (...) en SQL et c'est juste une forme courte pour une instruction or. Cela rend les choses un peu plus faciles car il vous suffit d'ajouter .in appels aux criteria clés dont les valeurs sont des tableaux, quelque chose comme ceci :

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