Mongodb PHP вложенный $ и $ или

У меня действительно есть проблема, чтобы понять, как создавать вложенные и / или операторы в массиве запросов PHP MongoDB. Для простоты понимания вот что я написал бы в SQL:

SELECT * FROM message where (fromid = '$myfromid' AND toid = '$mytoid') OR (fromid = '$mytoid' AND toid = '$myfromid')

У меня есть MongoCollection, уже установленный для коллекции сообщений и создаю курсор с этим условным массивом:

$arr_Search = array(
        '$or' => array(
            array( '$and' => array(
                array('fromid' => $myfromid, 'toid' => $mytoid )
            ) ),
            array( '$and' => array(
                array('fromid' => $mytoid, 'toid' => $myfromid )
            ) )
        )
    );

Это работает, но не так, как ожидалось. Он дает мне все наборы данных, где только "fromid" - это $myfromid. Я попробовал это с этим:

$arr_Search = array(
        '$or' => array(
             array('fromid' => $myfromid, 'toid' => $mytoid ),
             array('fromid' => $mytoid, 'toid' => $myfromid )
        )
    );

Но то же самое здесь. Я много искал о вложенных утверждениях, но мне кажется, что я неправильно понял это. Может ли кто-нибудь помочь мне с этим примером?

Большое спасибо! Себастьян

1 ответ

Хм. Не знаю, что я сделал раньше, но, похоже, сейчас работает. Для всех ищущих об этом, это правильный способ справиться с этим:

$arr_Search = array(
        '$or' => array(
            array('fromid' => $fromid, 'toid' => $toid ),
            array('fromid' => $toid, 'toid' => $fromid )
        )
    );

Спасибо Себастьян

Другие вопросы по тегам