PHP如何获取mongoDB查询的条数
有业务代码如下:
$conn = new MongoClient('mongodb://127.0.0.1:27017');
$db = $conn->database->table;
$start = 0;
$limit = 200;
while (1) {
$conditions = array(
'id' => array(
'$gt' => $start,
),
);
$dataList = $db->find($conditions)->limit($limit);
// 这里需要知道查询到最后,跳出while循环
foreach ($dataList as $data) {
// 业务处理代码
}
}
上面的问题在于如何知道查询到最后一页了。
第一反应是获取本次查询的条数,小于$limit值则表示为最后一页。
if ($dataList->count() < $limit) {
break;
}
执行后发现并没有进入到这个if判断里,断点输出后发现count()输出的是总的条数,而非本次查询的条数。
MongoCursor::count — Counts the number of results for this query
public int MongoCursor::count ([ bool $foundOnly = FALSE ] )
foundOnly Send cursor limit and skip information to the count function, if applicable.
查看PHP手册资料后,才知道传递一个true参数即可。
if ($dataList->count(true) < $limit) {
break;
}