2016-06-09 3 views
0

PHP로 mongodb에서 forEach를 사용하는 효율적인 방법이 있습니까? 문제는 결과 배열의 모든 요소에 대해 CSV 파일에 새 행을 추가 할 수 있다는 것입니다. 데이터가 거대 할 수있는 가능한 솔루션의 하나가forEach mongodb PHP

$ 데이터를 사용했다, 메모리에 전체 데이터를로드, 내 문제에 대한 확장 옵션되지 않은 몽고 커서

$records = iterator_to_array($data); 
    $file = fopen("contacts.csv","w"); 
    foreach ($records as $record){    
     fputcsv($file,$record); 
    } 

입니다하지만. 어떤 방법으로도 forEach를 사용할 수있는 더 나은 대안이 있습니까? 몽고 PHP이 솔루션은 $ 데이터로 작동

+0

'$ data'가'Iterator' 인터페이스를 구현하는 객체라면'$ data'에 직접'foreach'를 사용할 수 있습니다. 간단한 배열로 변환 할 필요가 없습니다. http://php.net/manual/en/class.iterator.php –

+0

몽고 db 내에서 forEach를 사용해야합니다. –

+0

'$ data'가 mongodb 커서임을 이해합니다. 간단하게'foreach ($ record as $ record)'를 반복하여 반복 할 수 있습니다. 이 단계에서는 배열이 될 필요는 없지만 루프 내에서'iterator_to_array ($ record)'를 호출하여'fputcsv()'와 함께 사용하고 메모리에 모두로드하는 것을 피할 수 있습니다. –

답변

0
$file = fopen("contacts.csv","w"); 
foreach ($data as $record){    
    $contact = iterator_to_array($record);  
    fputcsv($file,$contact); 
} 

에 대해 forEach를 사용하는 방법 커서 남아 루프 내부 iterator_to_array는() CSV 파일에 배치 될 배열로 개인 기록을 변환합니다.