2011-10-06 14 views

Respuesta

33

Puede utilizar la función de PHP iterator_to_array, como se sugiere en el ejemplo 1 de la MongoCursor docs:

$jokes = $collection->find(); 
$jokesArray = iterator_to_array($jokes); 
+0

¿Es una buena práctica obtener el resultado como una matriz para mongodb? –

+0

Esto fue muy útil ya que algunas operaciones que no se pueden hacer en un cursor, simplemente se convierten en json – tristanbailey

+0

Gracias @Chris Henry – sujivasagam

-1

find() básicamente devuelve el cursor MongoDB http://www.php.net/manual/en/mongocollection.find.php

esto debería funcionar para su caso

$cursor = $collection->find(); 
foreach($cursor as $jokes) { 
print_r($jokes); 
} 
+1

@ xe4me el hecho de que * no responde la pregunta * parece un pequeño error. –

6

Como nota al margen de la respuesta de Chris:

matriz iterator_to_array (atravesables $ iterador [, bool $ use_keys = verdadero])

Tenga en cuenta el segundo parámetro opcional, si se establece en true (por defecto), la matriz final será indexado utilizando el campo "_id" de cada documento.

Si aplicó una especie en la consulta mongo, la matriz final no podría ser lo que se esperaba, lo que significa que el orden de clasificación no será preservado (a menos que establezca la $ use_keys parámetro para falsa)

+0

Esto era lo que estaba buscando ... Gracias hombre ... –

+0

NOTA: Esto también elimina las claves de matriz asociativa y las cambia a numéricas. – Ligemer

1

iterator_to_array() obliga al controlador a cargar todos los resultados en la memoria, , así que no haga esto para los conjuntos de resultados que son más grandes que la memoria. uso de este

$jokes = $collection->find(); 
foreach ($jokes as $joke) { 
    var_dump($joke); 
} 
0

mucho más fácil:

findeOne()->getArrayCopy(); 

como se mencionó antes: cuidado de cargar grandes conjuntos de resultados y convertirlos en una matriz

también puede establecer sus preferencias con el typeMap opción

'typeMap' =>[ 
     'document' => 'array', 
     'root' => 'array' 
       ] 
-1

en caso si alguien ne llegó aquí, también puede usar el método toArray.

(mongodb> = 1.0.0)

MongoDB \ Driver \ cursor :: toArray - Devuelve una matriz que contiene todos resultados de este cursor

$jokes = $collection->find()->toArray(); 

o:

$jokes = $collection->find(); 
$jokesArray = $jokes->toArray(); 
Cuestiones relacionadas