Я пытаюсь создать запрос, в котором пользователь выбирает несколько параметров, а затем мы фильтруем поиск на основе параметров. Данные немного странные, поскольку свойство в коллекции существует только для данных, добавленных с определенного года. У нас есть опция с названием null, если она выбрана, мы хотим добавить все записи, в которых это свойство не существует.
В настоящий момент мы создаем массив выбранных элементов и используем свойство mongodb in для сопоставления all.
if (isset($params["value"])) {
$match = preg_match_all('/value=(\w+)/', $_SERVER['QUERY_STRING'], $matches);
$valueArray = array();
foreach($matches[1] as $i => $item) {
if(in_array(strtoupper($item), ["EA", "EA2", "WD1"])){
array_push($valueArray, strtoupper($item));
}
}
if ($match > 0){
$matchPipeline["value"] = ['$in'=> $valueArray];
}
}
Как мне обновить это, чтобы получить все записи, которые не имеют свойства value, если выбрано eitheir только 'Null' или выбрано в дополнение к другому значению, например ea
Edit - Возможное решение. Я создал переменную с именем $ null, если выбрана опция NULL.
if ($match > 0){
if($null == true){
$matchPipeline['$or'] = [
["value" => ['$in'=> $valueArray]],
["value" => ['$exists' => false]],
];
} else {
$matchPipeline["value"] = ['$in'=> $valueArray];}
}