php mongodb获取总数,MongoDB聚合:如何获取总记录数?

我已经使用聚合从mongodb获取记录。

$result = $collection->aggregate(array(

array('$match' => $document),

array('$group' => array('_id' => '$book_id', 'date' => array('$max' => '$book_viewed'),  'views' => array('$sum' => 1))),

array('$sort' => $sort),

array('$skip' => $skip),

array('$limit' => $limit),

));

如果我无限制地执行此查询,则将提取10条记录。 但我想将限制保持为2。因此,我想获取总记录数。 如何进行汇总? 请给我建议。 谢谢

如果只有2,结果将是什么样?

这是在单个查询中同时获得分页结果和结果总数的最常见问题之一。我无法解释当我最终实现它时的感受。

$result = $collection->aggregate(array(

array('$match' => $document),

array('$group' => array('_id' => '$book_id', 'date' => array('$max' => '$book_viewed'),  'views' => array('$sum' => 1))),

array('$sort' => $sort),

// get total, AND preserve the results

array('$group' => array('_id' => null, 'total' => array( '$sum' => 1 ), 'results' => array( '$push' => '$$ROOT' ) ),

// apply limit and offset

array('$project' => array( 'total' => 1, 'results' => array( '$slice' => array( '$results', $skip, $length ) ) ) )

))

结果将如下所示:

[

{

"_id": null,

"total": ...,

"results": [

{...},

{...},

{...},

]

}

]

有关此文档:docs.mongodb.com/v3.2/reference/operator/aggregation/group/ ...请注意,使用这种方法,整个非分页结果集必须适合16MB。

这是纯金!我一直在努力使这项工作顺利进行。

谢了,兄弟

你可能感兴趣的:(php,mongodb获取总数)