Frage

Ich habe eine Xampp 1.7.3 Instanz läuft und einen MongoDB 1.2.4-Server auf der gleichen Maschine.

Ich mag sie verbinden, so dass ich im Grunde war folgende dieses Tutorial auf php.net, so scheint es zu verbinden, aber die Cursor sind immer leer. Ich weiß nicht, was soll ich fehle.

Hier ist der Code ich versuche. Die Cursor-> gültig sagt immer falsch. Dank

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

?>

diese Zeile mit dem Befehl tun funktioniert perfekt

use CDO
db.rep_consulta.find()
-- lot of data here
War es hilfreich?

Lösung

Wenn Sie die Ergebnisse der Abfrage Iterieren Sie voran den Cursor nicht. Laufen über den Code verursacht eine Endlosschleife, da der Cursor nicht vorgeschoben wird. Versuchen Sie,:

$item = $cursor->current();

$item = $cursor->getNext();

Persönlich bevorzuge ich diese Syntax:

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

Bearbeiten

Der folgende Code funktioniert gut für mich. Können Sie es ausprobieren?

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

Bearbeiten ++

By the way, Cursor- $> gültig () nicht wahr zurück, bis Sie den Cursor auf das erste Element des Ergebnisses vorantreiben. Das ist, warum Sie bekommen falsch. Sie haben noch die Cursor an diesem Punkt in Ihrem Code zu gelangen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top