запрос mongo не работает должным образом на сервере Linux PHP mongo linux

#php #linux #mongodb

#php #linux #mongodb

Вопрос:

У меня есть запрос mongo, который отлично работает на моем локальном компьютере в Windows

но на сервере, который использует Linux, тот же запрос не работает

Под «не работает» я подразумеваю, что он выполняется правильно, но не может найти данные, соответствующие этим критериям.

 MDB::alloc()->{COLL_wall}->remove(
        array(
            '_id'   => new MongoId($wid),
            '$or'   => array(
                array(wall_owner    => $this->id),
                array(wall_writter  => $this->id)
            ),
            wall_owner  => $wallOwner
        ),
        array(
            'safe'  => true
        )
    );
  

в чем может быть проблема?

Комментарии:

1. Помогло бы, если бы вы описали, чего именно вы ожидаете от этого запроса.

Ответ №1:

Скорее всего, проблема в том, что на вашем компьютере в Linux версия mongo намного старше, и по этой причине оператор «или» там не работает

Проверьте обе свои версии и при необходимости обновите.

Ответ №2:

Возможные проблемы: a) new MongoId($wid) немного странно, редко можно увидеть, чтобы MongoID получал аргумент. $ wid — это 24 шестнадцатеричных символа, верно? Поскольку MongoID молча игнорирует все остальное и создает новый идентификатор, это может быть проблемой.

Во-вторых, ваши типы данных в порядке? Большинство жалоб на запросы Mongo связано с тем фактом, что целое число 1 не соответствует сохраненной строке ‘1’.

Комментарии:

1. новый MongoId ($ wid) создает mongoId из строки для соответствия типу данных, все в порядке, я это проверил. Проблема в операторе ‘$or’. в Windows он находит элемент и удаляет его, но в Linux это не удается сделать