有很多关于避免使用iterator_to_array
的说法,所以我们应该直接使用foreach loop
来获取返回的字段。
主要原因是iterator_to_array将所有返回的文档加载到RAM中。
但是,就是这样,我问:
如果这些内容只返回ONE document
,该文档只返回ONE field
,该怎么办?
iterator_to_array不是比为它抛出一个循环更合适吗?
大多数情况下,我正在使用projections
,以便它只返回我将绝对传递给变量的字段。所以很自然它会被存储在RAM中......' - '
答案 0 :(得分:0)
如果你的iterator_to_array()
循环只是要收集数组中的文档,那么使用foreach
是没有害处的。正如您所提到的,如果您要一次处理一个结果中的文档并且不需要它们在内存中共存,foreach
就有其优势。
如果您的查询只返回单个文档,您也可以使用MongoCollection::findOne()并避免自己迭代MongoCursor。