PHP 的 foreach 如何与 MongoDB 游标配合使用?

Posted

技术标签:

【中文标题】PHP 的 foreach 如何与 MongoDB 游标配合使用?【英文标题】:How foreach of PHP works with MongoDB Cursor? 【发布时间】:2016-06-20 18:04:18 【问题描述】:

我们从 MongoDB 驱动程序中使用了某些函数,例如迭代游标,我们可以使用“hasNext()”和“getNext()”。但是我们也可以使用简单的 php 的 foreach 来迭代游标,而不必调用上述方法。

我的问题是,如果 foreach 是简单的 PHP 函数,它如何与 MongoDB 一起工作?它如何从 cursor 中获取记录?它是在内部使用 MongoDB 的“cursor.forEach()”还是在内部运行“hasNext()”和“getNext()”?

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

MongoCursor 类实现了Iterator 接口。所以,foreach 光标,与调用 $cursor->next(),然后检查 $cursor->valid(),然后从 $cursor->current() 获取值是一样的(重复直到 validfalse)。对于$key => $value 格式,它的值也为$cursor->key()

它做了一些内部运行,但没有运行“hasNext()”、“getNext()”等。它运行Iterator接口中抽象描述的标准方法。

对不起,我的挑剔,但 foreach 不是“简单的 PHP 函数”;这是一种语言结构。我刚刚在 Stack Overflow 上找到了关于 the difference 的很好的解释。

【讨论】:

以上是关于PHP 的 foreach 如何与 MongoDB 游标配合使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?

如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?

使用PHP与2个foreach循环中的数组进行比较时如何获取迭代次数

javascript forEach() 函数如何在 mongodb shell 中迭代文档?

使用php时的mongodb错误[重复]

如何将 maxPoolSize 与 mongodb-php 驱动程序版本 1.2.0 一起使用