具有PHP变量的Mongodb查询不适用于Limit

时间:2019-07-16 12:46:14

标签: php mongodb limit

我已经用php为Mongodb编写了一个脚本,当限制为静态数时,它的工作正常,而当我们在脚本中传递变量时,它会抛出错误。

脚本代码为:

array(
                                "\$match" => array(
                                    "\$or" => array(
                                        array(
                                            'title' => new \MongoDB\BSON\Regex($queryString),
                                        ),
                                        array(
                                            'description' => new \MongoDB\BSON\Regex($queryString),
                                        ),
                                        array(
                                            'master.title' => new \MongoDB\BSON\Regex($queryString),
                                        ),
                                    ),

                                    "\$and" => array(
                                    array(
                                        'created_on' => new \MongoDB\BSON\Regex($filterDate)
                                        )
                                    )
                                )
                            ),

                            array(
                                '$sort' => array(
                                    'created_on' => -1
                                )
                            ),
                            array(
                                '$limit' => $filterLimit,
                            )

'$ limit'=> $ filterLimit,在我们传递静态数字时无法正常工作。

如果我们替换

                              array(
                                    '$limit' => $filterLimit,
                                )

                             array(
                                    '$limit' => 10,
                                )

工作正常。以下是错误

致命错误:未捕获的MongoDB \ Driver \ Exception \ CommandException:必须将限制指定为数字

1 个答案:

答案 0 :(得分:1)

$filterLimit可能是字符串,请尝试将其强制转换为整数:

array(
    '$limit' => intval($filterLimit),
)