如何将 $elemMatch 与正则表达式结合起来

以下过滤器


['labels' => [

    '$elemMatch' => new \MongoDB\BSON\Regex(

        '/^' . preg_quote($this->_keywords[$i]) . '$/i'

    )

]]

应用于下面的函数


public static function readDB(

    $collectionName, 

    $filter, 

    $options

) {

    //logError("readDB filter:", $filter);

    try {

        $manager = new MongoDB\Driver\Manager(

            "mongodb://localhost:27017"

        );

        $rqt = new MongoDB\Driver\Query(

            $filter, 

            $options

        );

        $results = $manager->executeQuery(

            "leibnizdream." . $collectionName, 

            $rqt

        );

        return PhysicalAccessors::objectToArray(

            $results

        );

    } 

    catch (Exception $e) {

        logError($e->getMessage());

        return array(

            "error" => self::MSG_KO . $collectionName

        );

    }

}

结果出现以下错误:


$elemMatch needs an Object

我的日志报告了这一点:


[$elemMatch] => MongoDB\BSON\Regex Object(

    [pattern] => /^ad$/i

    [flags] => 

)

有人知道正确的语法吗?我没能在互联网上找到它。


神不在的星期二
浏览 134回答 1
1回答

白板的微信

$elemMatch 需要一个运算符,您可以使用$regex来执行正则表达式匹配。
打开App,查看更多内容
随时随地看视频慕课网APP