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