我有一个带有一个名为limit的可选参数的api,它接受一个整数并限制在get请求中从api返回的文档数。
当我的PHP应用程序是必需参数时,在我的PHP应用程序中实现此限制很好,但是当它未被指定为我的get请求的一部分时,处理它的最佳方法是什么?
有没有例如,一种定义$ limit并将其设置为所有文档的方法? (伪代码,$ limit = none)
$list = $collection->aggregate( array( array('$match' => array( ... )),
'$project' => array ( ... )), '$limit' => intval($this->limit) ));
$this->limit //this is the optional input parameter
如上所示,当需要limit参数时,它可以根据需要运行。现在当它被省略时,我如何保留上面的代码但是没有指定限制?
答案 0 :(得分:2)
您可以手动生成where子句。
// Declare a where clause with your fixed conditions
$whereClause = array(array('$match' => array(...)), array('$project' => array(...)));
// Check if there's a limit
if($this->limit != 0)
array_push($whereClause, array('$limit' => $this->limit));
// Finally, call with the where clause we've generated above
$list = $collection->aggregate($whereClause);
答案 1 :(得分:1)
简短回答不!
但是,你可以像这样使用if / else条件:
<?php
if(intval($this->limit) != 0 ) {
$list = $collection->aggregate( array(
array('$match' => array( ... )),
array('$project' => array ( ... ))
array('$limit' => intval($this->limit))
);
));
} else {
$list = $collection->aggregate( array(
array('$match' => array( ... )),
array('$project' => array ( ... )),
);
}
?>