微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式查找MongoDB PHP

我正在尝试使用MongoRegex一个MongoDB集合进行PHP查找,但我无法使其工作.代码很简单:

$cursor = $this->collection->find($params)
//$params has this value:
//Array
//(
//    [name] => MongoRegex Object
//    (
//       [regex] => .*victor.*
//       [flags] => i
//    )
//    [login] => MongoRegex Object
//    (
//        [regex] => .*victor.*
//        [flags] => i
//    )
//)

这个$params数组是用这个函数构造的:

function toRegEx($entryVars=array()){
    $regexVars = array();
    foreach($entryVars as $var => $value){
        $regexVal = html_entity_decode($value);
        $regexVars[$var] = new MongoRegex("/.*".$regexVal.".*/i");
    }
    return $regexVars;
}

出于某种原因,此查询仅返回完全匹配的值(即登录名或名称恰好为“胜利者”的文档).我想要的是查询返回登录名和/或名称包含单词“victor”的所有文档.我很确定我遗漏了一些基本的东西,但我无法找到它.任何帮助表示赞赏.谢谢!

解决方法:

我想你只是将正则表达式锚定到主题字符串的开头(^),尝试不用:

$regexVars[$var] = new MongoRegex("/".$regexVal."/i");

编辑:
另外,如果上面的$params数组的print_r转储是准确的,那么您可能在某个地方缺少$或语句以反映您的条件.认情况下,mongodb查询条件与“和”逻辑链接,因此您的查询将仅在两个字段上返回与regexp匹配的记录.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐