使用正则表达式查找MongoDB + PHP

 rert 发布于 2023-02-07 16:41

我正在尝试find使用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"的所有文档.我很确定我遗漏了一些基本的东西,但我无法找到它.任何帮助表示赞赏.谢谢!

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

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

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

    2023-02-07 16:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有