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

时间:2012-05-18 16:45:11

标签: php arrays mongodb

我是一名新手中级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);

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

2 个答案:

答案 0 :(得分:2)

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

$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);

答案 1 :(得分:0)

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