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;
    }

标签: mongodb

添加新评论