2011-10-06 62 views

回答

33

您可以使用PHP的iterator_to_array功能,爲MongoCursor docs的實例1中建議:

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

是最好的做法,以獲得結果數組爲mongodb? –

+0

這是非常方便的一些操作,你不能在遊標上做,只需轉換爲json – tristanbailey

+0

謝謝@Chris Henry – sujivasagam

6

作爲克里斯的回答一個側面說明:

陣列iterator_to_array(Traversable的$迭代器[,布爾$ use_keys = 真])

,請注意第二個參數,如果它被設置爲true(默認),最終的陣列將使用索引每個文檔中的「_id」字段。

如果應用在蒙戈查詢排序,最終陣列可能不是你所期望的,這意味着排序順序將不會被保留(除非你設置$ use_keys參數

+0

這就是我正在尋找的......謝謝你...... –

+0

注意:這還會刪除關聯數組鍵並將它們更改爲數字。 – Ligemer

1

iterator_to_array()強制驅動程序將所有結果加載到內存,因此,不要對比內存大的結果集執行此操作! 使用這種

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

輕鬆了不少:如前面提到的

findeOne()->getArrayCopy(); 

:從裝載大結果集提防並將其轉換爲一個數組

,你還可以設置自己的喜好與類型映射選項

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

如果有的話ne來到這裏,也可以用toArray的方法。

(mongodb的> = 1.0.0)

的MongoDB \驅動\光標::指定者 - 返回包含所有 結果此光標

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

或數組:

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