Сделайте запрос типа in_array с помощью MongoDB в PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Сделайте запрос типа in_array с помощью MongoDB в PHP

Сообщение Anonymous »

Я создаю веб-приложение и в этом приложении (Codeigniter и MongoDB) позволяю людям искать файлы по тегам. Например, если они введут теги house и cat, они получат все файлы, соответствующие им. Теги собираются в массив ($tags).

Вот как я выполняю поиск:

Код: Выделить всё

select ($select) -> where_in_all ('tags', $tags) -> get ('uploaded_files');
Приведенный выше запрос работает нормально, но мне действительно нужно разрешить пользователям выполнять поиск по частичным тегам. Например, «хоу» вместо «дом». Я знаю, как сделать запрос лайка, но только для одного тега за раз. Как заставить работать поиск in_array?

Я использую отличную оболочку MongoDB от vesparny. Это код в этой оболочке для обычного поиска в_массиве:

Код: Выделить всё

public function where_in_all($field = "", $in = array()){
$this->_where_init($field);
$this->wheres[$field]['$all'] = $in;
return ($this);
}
Это моя попытка изменить его, но она не работает:

Код: Выделить всё

public function where_in_all_like($field = "", $in = array()){
$this->_where_init($field);
$this->wheres[$field]['$all'] = new MongoRegex('/'.$in.'/i');
return ($this);
}
Что я делаю не так?
Обертку можно найти здесь:

Код: Выделить всё

https://github.com/vesparny/cimongo-codeigniter-mongodb-library
Благодарим за помощь!

Обновление

Кажется, это работает, НО только на моем локальном сервере... Не на рабочем сервере.

Код: Выделить всё

public function where_in_all_like($field = "", $in = array()){

$newarray = array ();

foreach ($in as $value) {
array_push ($newarray, new MongoRegex('/'.$value.'/i'));
}

$this->_where_init($field);
$this->wheres[$field]['$all'] = $newarray;
return ($this);
}
Обновление 2

Я обновил MongoDB на своем сервере до версии 2.0.4 и сейчас все работает нормально.

Подробнее здесь: https://stackoverflow.com/questions/105 ... odb-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»