游标无法为PHP产生多个迭代器mongodb错误

时间:2019-02-19 06:54:59

标签: php mongodb mongodb-query

我有一条简单的记录,应该根据查询返回。一旦尝试获得结果,就会出现以下错误:

  

游标不能产生多个迭代器

我拥有的代码非常简单:

    $db = \core\databaseUtilities\getDbConnection();

    $filter = [ 'email' => $email ]; 
    $query = new \MongoDB\Driver\Query($filter);

    $res = $db->executeQuery($db->dbName.".users", $query);
    $records = $res->toArray();

它在最后一行失败。

我在网上找到了一些如何查询它们的代码示例,它们看起来几乎是相同的。这是我使用的参考:http://php.net/manual/en/class.mongodb-driver-cursor.php

2 个答案:

答案 0 :(得分:0)

我发现了问题,并且与代码无关。我正在发布答案,因为其他人可能会遇到相同的问题。这与我的IDE Visual Studio代码有关。但是,我认为这可能不限于我的IDE。问题是我在$ res-> toArray()上有一块手表。因此,当代码转到示例中的最后一行时,它试图再次进行迭代。我卸下手表后,问题就消失了,无需更改代码。

答案 1 :(得分:0)

您可以使用PHP的iterator_to_array函数,如MongoCursor文档的example中所述:

$res = $db->executeQuery($db->dbName.".users", $query);
$records = iterator_to_array($res);