0

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

我从静态查找功能开始:

$dateRange = $this->collection->find(array(

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

));

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

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

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

4

2 回答 2

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);
于 2012-05-18T17:06:24.040 回答
0

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

于 2012-05-18T16:48:48.720 回答