我是一名新手中级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);
没用。那么,我做错了什么?
答案 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
语句。