$jokes = $collection->find();
如何将$jokes
转换为数组?
您可以使用PHP的iterator_to_array
函数,如MongoCursor
docs的示例1中所示:
$jokes = $collection->find();
$jokesArray = iterator_to_array($jokes);
作为克里斯答案的旁注:
array iterator_to_array(Traversable $ iterator [,bool $ use_keys = true])
注意可选的第二个参数,如果设置为true(默认值),则使用每个文档中的“_id”字段索引最终数组。
如果在mongo查询中应用了排序,则最终数组可能不是您所期望的,这意味着不会保留排序顺序(除非您将$ use_keys参数设置为false)
iterator_to_array()
强制驱动程序将所有结果加载到内存中,因此不要对大于内存的结果集执行此操作!用这个
$jokes = $collection->find();
foreach ($jokes as $joke) {
var_dump($joke);
}
iterator_to_array不能用于嵌套超过2个级别,
使用typeMap可以将root及其文档转换为数组,它适用于任何级别的嵌套
findOne($过滤,$选项)
$options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$collection->findOne(['myId' => $id ], $options); // returns array
找到($过滤,$选项)
$options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$collection->find(['myId' => $id ], $options)->toArray();
更容易:
findeOne()->getArrayCopy();
如前所述:注意加载大型结果集并将其转换为数组
您还可以使用typeMap选项设置首选项
'typeMap' =>[
'document' => 'array',
'root' => 'array'
]
find()基本上返回MongoDB游标http://www.php.net/manual/en/mongocollection.find.php
这应该适合你的情况
$cursor = $collection->find();
foreach($cursor as $jokes) {
print_r($jokes);
}
如果有人来到这里,你也可以使用toArray
方法。
(mongodb> = 1.0.0)
MongoDB \ Driver \ Cursor :: toArray - 返回包含此游标的所有结果的数组
$jokes = $collection->find()->toArray();
要么 :
$jokes = $collection->find();
$jokesArray = $jokes->toArray();