Mongodb学说“不允许使用零长度密钥,你是否使用带双引号的$”

时间:2013-06-12 06:42:27

标签: php mongodb doctrine

程序员,我使用symfony doctrine和mongodb。今天我尝试创建以下查询:

$q = $this->createQueryBuilder("user");
$keywords = explode("_", $keyword);
foreach ($keywords as $keyword) {
    $r = new \MongoRegex('/'.$keyword.'/i');
    $q->addAnd(
    $q->addOr($q->expr()->field('firstName')->equals($r))
        ->addOr($q->expr()->field('lastName')->equals($r))
    );
}
return $q->getQuery()->execute();

但是在执行()后我得到以下错误“不允许使用零长度键,你是否使用带双引号的$”。查询必须通过关键字实现用户搜索。你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果有人感兴趣,我通过使用单独的“或”表达式找到解决方案:

    $q = $this->createQueryBuilder();
    $keywords = explode(" ", $keyword);
    foreach ($keywords as $keyword) {
        $r = new \MongoRegex('/'.$keyword.'/i');
        $q->addOr($q->expr()->field('firstName')->equals($r));
        $q->addOr($q->expr()->field('lastName')->equals($r));
    }
   return $q->getQuery()->execute();

希望我的经验会有所帮助