Domanda

Ho un XAMPP 1.7.3 un'istanza in esecuzione e un server MongoDB 1.2.4 sulla stessa macchina.

Voglio collegare loro, così ho praticamente ho seguito questo tutorial su php.net, sembra collegare ma i cursori sono sempre vuota. Non so che cosa mi manca.

Ecco il codice che sto cercando. Il cursor-> valida dice sempre false. grazie

<?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"].'...';
}

?>

In questo modo da riga di comando funziona perfetto

use CDO
db.rep_consulta.find()
-- lot of data here
È stato utile?

Soluzione

Quando l'iterazione i risultati della query non si sta avanzando il cursore. Il funzionamento del vostro codice di cui sopra sta causando un ciclo infinito in quanto il cursore non viene avanzata. Prova a cambiare:

$item = $cursor->current();

a

$item = $cursor->getNext();

Personalmente, preferisco questa sintassi:

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

Modifica

Il seguente codice sta lavorando bene per me. Puoi provarlo?

$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);
}

Modifica ++

A proposito, $ cursor-> valido () non restituirà vero fino a quando si passa il cursore sulla prima voce del risultato. Ecco perché si stanno ottenendo falso. Bisogna tuttavia per far avanzare il cursore in quel punto nel codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top