PHP - 我可以使用表单构建动态 Mongo 查询吗?


PHP - Can I build a dynamic Mongo query using a form?

我是一名新手中级PHP开发人员,开始使用MongoDB。 我想创建一个 Mongo 查询类,该类根据传递给该方法的参数构建查询。 我希望这是可能的,我只是缺少一些基本的PHP技术。

我从一个静态查找函数开始:

$dateRange = $this->collection->find(array(
        'timeStamp' => array(
            '$gt' => $startTime,
            '$lt' => $endTime
        ),
        'userAgent' => array(
            '$ne' => 'ELB-HealthChecker/1.0'
        )
));

我希望能够将时间范围、userAgent、紧急级别等传递到方法中,然后根据这些参数是否存在构建查询。我尝试了这样的事情:

if($startTime && $endTime){
$filter = "
     'timeStamp' => array(
                '$gt' => $start,
                '$lt' => $end
            )";
}
if($userAgent){
$filter .= ",
        'userAgent' => array(
            '$ne' => 'ELB-HealthChecker/1.0'
        )";
$dateRange = $this->collection->find(array($filter);

没用。那么,我做错了什么?

看起来您正在尝试使用字符串,您应该只使用数组。

$qry = array();
if(isset($startTime) && isset($endTime)) {
    // Add the timestamp array
    $qry['timestamp'] = array('$gt' => $startTime, '$lt' => $endTime);
}
if(isset($userAgent)) {
    // add the userAgent
    $qry['userAgent'] = array('$ne' => 'ELB-HealthChecker/1.0');
}
$dateRange = $this->collection->find($qry);

你试过if(isset($startTime) && isset($endTime))吗?似乎您也可能需要一些else语句。