mongodb 聚合中的 $limit 作为可选参数?

$limit in mongodb aggregation as an optional parameter?

我有一个 api,它有一个名为 limit 的可选参数,它接受一个整数并限制从 api 获取请求中返回的文档数量。

当它是必需参数时,在我的 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 参数时,它会按要求运行。现在当它被省略时,我怎样才能保留上面的代码但不指定限制?

简答否!

但是,您可以使用这样的 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 ( ... )), 
    );
}
?>

您可以手动生成 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);