$jokes = $collection->find();
Как преобразовать $jokes
в массив?
$jokes = $collection->find();
Как преобразовать $jokes
в массив?
Вы можете использовать функцию PHP iterator_to_array
, как показано в примере 1 MongoCursor
docs:
$jokes = $collection->find();
$jokesArray = iterator_to_array($jokes);
Как примечание к Крису:
array iterator_to_array (Traversable $iterator [, bool $use_keys = true])
Обратите внимание на необязательный второй параметр, если он установлен на true (по умолчанию), последний массив будет индексироваться с использованием поля "_id" из каждого документа.
Если вы применили сортировку в запросе mongo, конечный массив может быть не таким, как вы ожидали, что означает, что порядок сортировки не будет сохранен (если вы не установите параметр $use_keys в ложь)
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();