我刚开始使用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()来获取可用结果行的总数.在这一行错误显示"光标超时".请问有谁能告诉我这个问题是什么?或者找到搜索结果总数的替代方法是什么.
提前致谢.
您可以通过在以下之前添加此代码来解决游标超时问题find():
MongoCursor::$timeout = -1;
$cursor = $this->dbReference->dbName->find($query);
Run Code Online (Sandbox Code Playgroud)
我刚刚用 100,000 个简单文档尝试过这一点。$totalCount对我来说总是 100000,无论是否设置了$count和$startIndex(这是正确的行为)。$entries包含全部 100000 个条目。在我的本地设置中,整个操作大约需要 3 秒。
您使用的是远程数据库吗?导致超时的原因可能是网络而不是 MongoDB。
您的文档尺寸是多少?数据量会影响速度。