#php #mongodb #mongodb-query
#php #mongodb #mongodb-запрос
Вопрос:
У меня есть следующий запрос if.
if(($version[0] == 1)||($version[1] > 6)||($version[2]>=14 amp;amp; $version[1] == 6))
{
echo "true";
}
Теперь я хочу, чтобы этот запрос был переведен в запрос mongodb.
В коллекции mongo у меня есть следующая запись:
{
"main_version" : 0,
"sub_version" : 6,
"build_version" : 14,
"module" : "Co2",
"active" : 1
}
Когда я пытаюсь выполнить следующий запрос, я получаю ошибку mongo.
$where = array('$or' => array(
array('main_version'=> (int)$version[0]),
array('sub_version'=> array('$gt'=> (int)$version[1])),
array('$and' => array('build_version' => array('$gte'=> (int)$version[2])),
array('sub_version' => (int)$version[1]),
),
array('active'=> 1),
),
);
Ошибка: не удается канонизировать запрос: неверное значение и требуется массив’
Кто-нибудь знает, как решить этот запрос?
Комментарии:
1. Какой язык программирования вы используете?
2. В настоящее время я использую php
3. Хорошо работал в php 6 лет назад, но я думаю, что ваш оператор $ and должен принимать массив запросов, что-то вроде array(‘$and’ => array(array(‘build_version’ => array(‘$ gte’=> (int)$version[2])), array(‘sub_version’ => (int)$version[1])) Я думаю, ‘and’ принимает массив, как вы делаете для ‘или’ opereartor, здесь вы передаете запрос вместо массива.
4. Рахул, да, дополнительный массив был решением. tx
5. @RahulKumar добавьте свое решение в качестве ответа, чтобы арджан мог принять его, и оно будет выделяться больше.
Ответ №1:
Ну, работал в php 6 лет назад, но я думаю, что ваш оператор $ and должен принимать массив запросов,
что-то вроде array('$and' => array(array('build_version' => array('$gte'=> (int)$version[2])), array('sub_version' => (int)$version[1]))
‘и’ принимает массив, как вы делаете для ‘или’ opereartor, здесь вы передаете запрос вместо массива.
Ответ №2:
Да, дополнительный массив был решением. tx