#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 это не удается сделать