代码之家  ›  专栏  ›  技术社区  ›  Jhonny D. Cano -Leftware-

将xampp连接到MongoDB

  •  0
  • Jhonny D. Cano -Leftware-  · 技术社区  · 14 年前

    我在同一台机器上运行了一个xampp1.7.3实例和一个mongodb1.2.4服务器。

    this tutorial 在php.net上,它似乎是连接的,但游标总是空的。我不知道我错过了什么。

    这是我正在尝试的代码。光标->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 回复  |  直到 14 年前
        1
  •  1
  •   Stephen Curran    14 年前

    在迭代查询结果时,您没有推进光标。运行上面的代码会导致一个无限循环,因为光标没有被提升。尝试更改:

    $item = $cursor->current();
    

    $item = $cursor->getNext();
    

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

    编辑

    下面的代码对我来说运行良好。你能试试吗?

    $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->valid()在将光标移到结果的第一项之前不会返回true。这就是为什么你变得虚假。您还需要在代码中的该点前进光标。