2011-10-06 12 views

risposta

33

È possibile utilizzare la funzione di PHP iterator_to_array, come suggerito nell'esempio 1 del MongoCursor docs:

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

È una buona pratica ottenere risultati come array per mongodb? –

+0

Questo è stato molto utile in quanto alcune operazioni non possono essere eseguite su un cursore, è sufficiente convertire in jSON – tristanbailey

-1

find() restituisce fondamentalmente cursore MongoDB http://www.php.net/manual/en/mongocollection.find.php

questo dovrebbe funzionare per il vostro caso

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

@ xe4me il fatto che * non risponda alla domanda * sembra un po 'un difetto. –

6

Come nota a margine della risposta di Chris:

matrice iterator_to_array (attraversabile $ iteratori [, bool $ use_keys = vero])

Prestare attenzione al secondo parametro opzionale, se è impostata su true (impostazione predefinita), l'array finale sarà indicizzato utilizzando il campo "_id" di ciascun documento.

Se è stata applicata una sorta nella query Mongo, l'array finale potrebbe non essere quello che vi aspettavate, il che significa che l'ordinamento non sarà conservato (a meno che non si imposta la $ use_keys parametro falso)

+0

Questo era quello che stavo cercando ... Grazie amico ... –

+0

NOTA: Rimuove anche le chiavi associative associative e le cambia in numeriche. – Ligemer

1

iterator_to_array() impone al driver di caricare tutti i risultati in memoria, , quindi non farlo per i set di risultati che sono più grandi della memoria! uso questo

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

molto più facile:

findeOne()->getArrayCopy(); 

come accennato prima: attenzione di caricare grandi gruppi di risultati e di convertirli in una serie

è anche possibile impostare le preferenze con il typemap opzione

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

in caso se qualcuno ne è venuto qui, puoi anche usare il metodo toArray.

(mongodb> = 1.0.0)

MongoDB \ Driver \ Cursore :: toArray - Restituisce un array contenente tutti risultati di questo cursore

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

o:

$jokes = $collection->find(); 
$jokesArray = $jokes->toArray(); 
Problemi correlati