将MongoCursor从 - > find()转换为数组

jin*_*ini 15 php mongodb

$jokes = $collection->find();
Run Code Online (Sandbox Code Playgroud)

我如何转换$jokes成数组?

Chr*_*nry 36

您可以使用PHP的iterator_to_array功能,如MongoCursor文档示例1中所示:

$jokes = $collection->find();
$jokesArray = iterator_to_array($jokes);
Run Code Online (Sandbox Code Playgroud)


Mih*_*icu 7

作为克里斯答案的旁注:

array iterator_to_array(Traversable $ iterator [,bool $ use_keys = true])

注意可选的第二个参数,如果设置为true(默认值),则使用每个文档中的"_id"字段索引最终数组.

如果在mongo查询中应用了排序,则最终数组可能不是您所期望的,这意味着不会保留排序顺序(除非您将$ use_keys参数设置为false)


sat*_*tel 6

iterator_to_array不适用于嵌套超过 2 个级别,

使用typeMap您可以将根及其文档转换为数组,它适用于任何级别的嵌套

findOne($filter,$options)

$options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$collection->findOne(['myId' => $id ], $options); // returns array
Run Code Online (Sandbox Code Playgroud)

查找($过滤器,$选项)

$options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$collection->find(['myId' => $id ], $options)->toArray(); 
Run Code Online (Sandbox Code Playgroud)