Джимми Сочук оказал большую помощь в дальнейшем, но также вдохновил меня на поиск «$ in» для использования его в качестве оператора равенства = =, но это может оказаться невозможным ...
У меня есть этот код, который я хотел бы сделать более красивым (знаю, что он выглядит сложным (так что пропустите его), но я скоро доберусь до сути, и тогда он может быть не таким сложным:
// First html drop down selection / filter selection
if ($key[0] <> "") {
if ($op[0] == "=") $query = array($key[0] => $val[0]);
else $query = array( $key[0] => array( $op[0] => $val[0] ) );
}
else return($query);
// Second html drop down selection / filter selection
if ($key[1] <> "") {
if ($op[1] == "=") $query = array( $log[0] => array( array($key[1] => $val[1]), $query));
else $query = array( $log[0] => array( array( $key[1] => array( $op[1] => $val[1] ) ), $query) );
}
else return($query);
Я хотел бы упростить код (для простоты я объединил строки key0 и key1):
if ($key[1] <> "") $query = array( $log[0] => array( array( $key[1] => array( $op[1] => $val[1] ) ), array( $key[0] => array( $op[0] => $val[0] ) )) );
$log: logical operater: "$and", "$or"
$key: key in database
$val: value to be matched against
$op: operater e.g. "$lt", "$gt", "$lte", "$gte", "$ne" all supported by Mongo.
Теперь моя проблема в том, что я хотел бы иметь $ op, который был бы $ = или немного похож на $ in. Однако $ in, кажется, соответствует одному и тому же ключу для нескольких значений, но в моем случае ключи могут отличаться. Наличие оператора $ = в монго очень упростит мое программирование. Я прочитал несколько учебных пособий, но не могу найти такого оператора. Я нахожу это странным, когда у вас есть $ ne (не равно), почему тогда нет равных. Я что-то пропустил, есть ли обходной путь (хорошо, я делаю обходной путь сейчас, но выглядит уродливо), или $ = существует?