我正在尝试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"的所有文档.我很确定我遗漏了一些基本的东西,但我无法找到它.任何帮助表示赞赏.谢谢!
我想你只是将正则表达式锚定到主题字符串的开头(^),尝试不用:
$regexVars[$var] = new MongoRegex("/".$regexVal."/i");
编辑:此外,如果上面的$ params数组的print_r转储是准确的,你可能在某处错过$或语句以反映您的条件.默认情况下,mongodb查询条件与"和"逻辑链接,因此您的查询将仅在两个字段上返回与regexp匹配的记录.