Formats include:
key => value - where key equals value
key => array(foo, bar) - where key equals foo AND bar
key => array(array(foo,bar)) - where key equals foo OR bar
key => array(array(foo,bar), hello) - where key equals foo OR bar AND hello
If there are no $in criteria (we can tell based on whether values = array)
then we only need to pass to mongo query as a single array as $and is implied.
However, if multiple criteria, we need to include $and hence the dual
approach here.