Преобразовать MongoCursor из -> find () в массив

$jokes = $collection->find(); 

Как преобразовать $jokes в массив?

Вы можете использовать функцию iterator_to_array PHP, как показано в примере 1 документов MongoCursor :

 $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); } 

намного проще:

 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();