2011-03-19 3 views
6

find() 결과를 얻은 후에 MongoDB 컬렉션을보고 어떻게 할 수 있습니까? 즉 :PHP에서 MongoDB Collection을 print_r하는 방법은 무엇입니까?

<?php 
    $cursor = $collection->find(); 
    json_encode($cursor); 
    //OR 
    print_r($cursor); 
?> 

등 상관없이 나는 아무것도 얻을 수 없다,하지만 난 루프는 내가 하나 하나에서 데이터를 얻을 수 있다면 내가 밖으로 데이터를 얻을 수 있습니다 (물론)하지만 문제는 무엇을, I 반환 된 배열을 AJAX/JS 작업을 수행하기위한 JSON 객체 전체로 인코딩하는 것과 같은 일을하고 싶습니다.

그래서 어떻게 할 수 있습니까?

답변

4

표준은 foreach 또는 while을 사용하여 결과를 반복하는 것입니다.

Mongo 커서와 함께 사용할 수있는 iterator_to_array (PHP 버전> 5.1의 일부로)도 있습니다. Mongo::find에 메모가 표시되면 메모리에있는 모든 결과가 메모리 한계를 초과하여 스크립트를 크래시 할 수 있으므로 이로드됩니다. 따라서 예상되는 데이터 양을 고려해야합니다. 당신은 MongoCursor에 아닌 PHP의 어레이 인 print_r을하려고

$cursor = $collection->find(); 
$array = iterator_to_array($cursor);. 
+0

https://gist.github.com/a1cceb8d4ec8ced1fbdb - 지금 어떻게하고 있니? 그냥 지저분 해 보인다. \ –

4

(작동하지 않습니다.) 당신은 커서를 변환하거나해야합니다

http://php.net/manual/en/class.mongocursor.php

PHP는 배열에 ...

<? 
// Connect to Mongo and set DB and Collection 
$mongo = new Mongo(); 
$db = $mongo->twitter; 
$collection = $db->tweets; 

// Return a cursor of tweets from MongoDB 
$cursor = $collection->find(); 

// Convert cursor to an array 
$array = iterator_to_array($cursor); 

// Loop and print out tweets ... 
foreach ($array as $value) { 
    echo "<p>" . $value[text]; 
    echo " @ <b><i>" . $value[created_at] . "</i></b>"; 
} 
?> 

은 또는 ...에서 MongoCursor을 반환하지 않습니다하는 대신) findOne를 (사용 당신은 단지 싶다면 하나의 문서를 가져 와서 JSON으로 응용 프로그램에 반환하면 다음과 같이 간단하게 처리 할 수 ​​있습니다 (요청한대로 JSON 및 print_r을 수행하는 방법을 보여줍니다).

자세한 내용은이 기사를 참조하십시오.

당신이 방법으로 몽고를 조회 할 수 있습니다 쉘을 사용

http://learnmongo.com/posts/mongodb-php-install-and-connect/

http://learnmongo.com/posts/mongodb-php-twitter-part-1/

<?php 

$connection = new Mongo(); 
$db = $connection->test; 
$collection = $db->phptest; 

$obj = $collection->findOne(); 
echo "<h1>Hello " . $obj["hello"] . "!</h1>"; 

echo "<h2>Show result as an array:</h2>"; 
echo "<pre>"; 
print_r($obj); 
echo "</pre>"; 

echo "<h2>Show result as JSON:</h2>"; 
echo "<pre>"; 
echo json_encode($obj); 
echo "</pre>"; 

?> 
0

가 배열로 출력 결과를 것이다.

db.products.find().toArray() 

위의 코드는 "제품"을 배열로 인쇄합니다. 테스트하지는 않았지만 PHP로 출력물을 얻고 인쇄물을 만들 수 있습니다. 그냥 생각.

관련 문제