sql >> Database >  >> NoSQL >> MongoDB

Rails 4 en mongoid:bouw programmatisch een query met meerdere AND- en OR-voorwaarden

De query die u wilt maken is:

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

Een :field.in werkt hetzelfde als field in (...) in SQL en dat is slechts een korte vorm voor een or-statement. Dat maakt de zaken een stuk eenvoudiger omdat je gewoon .in . hoeft toe te voegen oproepen naar de criteria sleutels waarvan de waarden arrays zijn, zoiets als dit:

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



  1. Gegevens herstellen Mongodb van JSON

  2. Sorteer op meerdere velden samen in mongodb

  3. R-lijst converteren naar JSON

  4. Sorteer sleutels in responsobject van Mongoose in ExpressJS en NodeJS