2010-03-12 6 views
0

동일한 컴퓨터에서 xampp 1.7.3 인스턴스를 실행하고 MongoDB 1.2.4 서버를 가지고 있습니다.xampp을 MongoDB에 연결하십시오.

나는 그들을 연결하고 싶다. 그래서 나는 기본적으로 php.net에서 this tutorial을 따르고있다. 그러나 그것은 연결되어있는 것처럼 보이지만 커서는 항상 비어있다. 내가 뭘 놓치고 있는지 모르겠다.

다음은 내가 시도하는 코드입니다. cursor-> valid는 항상 false로 표시됩니다. 커서를 진행하지 않는 쿼리의 결과를 반복 할 때 명령 라인으로이 일 덕분에

<?php 
$m = new Mongo(); // connect 
try { 
    $m->connect(); 
} catch (MongoConnectionException $ex) { 
    echo $ex; 
} 
echo "conecta..."; 
$dbs = $m->listDBs(); 
if ($dbs == NULL) { 
    echo $m->lastError(); 
    return; 
} 
foreach($dbs as $db) { 
    echo $db; 
} 

$db = $m->selectDB("CDO"); 
echo "elige bd..."; 
$col = $db->selectCollection("rep_consulta"); 
echo "elige col..."; 

$rangeQuery = array('id' => array('$gt' => 100)); 
$col->insert(array('id' => 456745764, 'nombre' => 'cosa')); 
$cursor = $col->find()->limit(10); 
echo "buscando..."; 
var_dump($cursor); 
var_dump($cursor->valid()); 
if ($cursor == NULL) echo 'cursor null'; 
while($cursor->hasNext()) { 
    $item = $cursor->current(); 
    echo "en while..."; 
    echo $item["nombre"].'...'; 
} 

?> 

use CDO 
db.rep_consulta.find() 
-- lot of data here 

답변

1

완벽하게 작동합니다. 위의 코드를 실행하면 커서가 진행되지 않으므로 무한 루프가 발생합니다. 변경 시도 :

foreach ($cursor as $item) 
{ 
    var_dump($item); 
} 

편집

다음 코드는 나를 위해 잘 작동 :

$item = $cursor->current(); 

개인적으로

$item = $cursor->getNext(); 

에,이 구문을 선호합니다. 그것을 시도해 볼 수 있습니까?

$m = new Mongo(); 

$db = $m->CDO; 
$col = $db->rep_consulta; 

$col->insert(array('id' => 456745764, 'nombre' => 'cosa')); 

$cursor = $col->find()->limit(10); 

foreach ($cursor as $item) 
{ 
    var_dump($item); 
} 

편집 ++ 그런데

, $ cursor-> 유효한()는 결과의 첫 번째 항목으로 커서를 전진 할 때까지 true를 반환하지 않습니다. 그게 거짓인지 왜. 코드의 해당 지점에서 커서를 아직 이동하지 않았습니다.

+0

글쎄, 그 전에 tryed ...하지만 코드가 심지어 while 루프에 들어 가지 않고있다. –

+0

흠. 이 경우 나는 무슨 일이 일어나고 있는지 잘 모르겠습니다. 나에게 잘 작동하는 코드 스 니펫으로 내 대답을 편집했습니다. 그것을 실행할 수 있습니까? 그것이 당신을 위해 작동하지 않는다면, 우리의 환경에 차이가 있어야합니다. –

+0

@Jhonny 당신은 무엇을 의미합니까? Windows에 있습니까? var_dump ($ col-> findOne())가 작동합니까? – kristina

관련 문제