题
我有一个XAMPP 1.7.3实例运行和在同一台机器上的MongoDB的1.2.4服务器。
我想将它们连接起来,所以我基本上一直在关注本教程上php.net,它似乎连接,但光标总是空的。我不知道我错过了什么。
下面是我想要的代码。该CURSOR->有效总是说假的。感谢
<?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
解决方案
当迭代您不前进光标的查询的结果。运行上面的代码,因为游标没有被推进导致一个无限循环。尝试改变:
$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->有效的(),直到你向前移动光标到结果的第一项将不会返回true。这就是为什么你得到错误的。您还没有向前移动光标在你的代码这一点。
不隶属于 StackOverflow