Codeigniter 在PHP中使用MongoDB进行类似数组的查询

Codeigniter 在PHP中使用MongoDB进行类似数组的查询,codeigniter,mongodb,mongodb-php,Codeigniter,Mongodb,Mongodb Php,我正在构建一个web应用程序,在这个应用程序Codeigniter和MongoDB中,我允许人们通过标签搜索文件。例如,如果他们进入标记house和cat,他们会得到与之匹配的所有文件。标记收集在数组$tags中 以下是我执行查找查询的方式: select ($select) -> where_in_all ('tags', $tags) -> get ('uploaded_files'); 上面的查询很好,但我确实需要让用户通过部分标记进行搜索。喜欢侯而不是房子。我知道如何进行l

我正在构建一个web应用程序,在这个应用程序Codeigniter和MongoDB中,我允许人们通过标签搜索文件。例如,如果他们进入标记house和cat,他们会得到与之匹配的所有文件。标记收集在数组$tags中

以下是我执行查找查询的方式:

select ($select) -> where_in_all ('tags', $tags) -> get ('uploaded_files');
上面的查询很好,但我确实需要让用户通过部分标记进行搜索。喜欢侯而不是房子。我知道如何进行like查询,但一次只能查询一个标记。如何使in_数组搜索工作

我使用的是vesparny提供的优秀MongoDB包装器。这是该包装中用于正常in_数组搜索的代码:

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,现在可以正常工作。

您在两台服务器上使用相同版本的包装器和mongo吗?包装器是相同的,但不是MongoDB本身。它们是哪个版本…?我升级到了最新版本的MongoDB 2.0.4,现在可以正常工作了。