MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rails 4 und mongoid:Erstellen Sie programmgesteuert eine Abfrage mit mehreren AND- und OR-Bedingungen

Die Abfrage, die Sie erstellen möchten, lautet:

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

Ein :field.in funktioniert genauso wie field in (...) in SQL und das ist nur eine Kurzform für eine or-Anweisung. Das macht die Sache um einiges einfacher, da Sie nur .in hinzufügen müssen Aufrufe der criteria Schlüssel, deren Werte Arrays sind, etwa so:

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