游标在MongoDb游标上超时错误

Mau*_*ora 4 mongodb

我刚开始使用mongoDb作为PHP的后端.

我只是使用find()查询来满足我的一个需求.我只想要前100个结果,但也想获得总体可用结果.我正在尝试这个.

    $cursor = $this->dbReference->dbName->find($query);
    if($count != 0)
    {
            $cursor->skip($startIndex);
            $cursor->limit($count);
    }
    $totalCount = $cursor->count();

    $entries = array();
    while ($cursor->hasNext())
    {
            $cursor->next();
            $entry = $cursor->current();
            array_push($entries , $entry);
    }
Run Code Online (Sandbox Code Playgroud)

现在问题是..他的搜索结果包含超过50K的结果.但我一次只检索100个.我使用$ cursor-> count()来获取可用结果行的总数.在这一行错误显示"光标超时".请问有谁能告诉我这个问题是什么?或者找到搜索结果总数的替代方法是什么.

提前致谢.

Nan*_*mar 7

您可以通过在以下之前添加此代码来解决游标超时问题find():

MongoCursor::$timeout = -1;
$cursor = $this->dbReference->dbName->find($query);
Run Code Online (Sandbox Code Playgroud)


dan*_*ood 1

我刚刚用 100,000 个简单文档尝试过这一点。$totalCount对我来说总是 100000,无论是否设置了$count$startIndex(这是正确的行为)。$entries包含全部 100000 个条目。在我的本地设置中,整个操作大约需要 3 秒。

您使用的是远程数据库吗?导致超时的原因可能是网络而不是 MongoDB。

您的文档尺寸是多少?数据量会影响速度。