通过PHP驱动程序进行MongoDB查询

通过PHP驱动程序进行MongoDB查询,php,mongodb,Php,Mongodb,我使用的是运行PHP5.4和PHPMongo驱动程序的WindowsXAMPP服务器 我使用以下方式查询数据: $results = $collection->find( array('league'=>'nba') ); foreach ($results as $user) { var_dump($user); echo "</br>"; } 我正在将ID转换为字符串: $cursorID = new MongoID($result[

我使用的是运行PHP5.4和PHPMongo驱动程序的WindowsXAMPP服务器

我使用以下方式查询数据:

$results = $collection->find( array('league'=>'nba') );
  foreach ($results as $user) {
      var_dump($user);
      echo "</br>";
  }
我正在将ID转换为字符串:

$cursorID = new MongoID($result['_id']);
$gameLink = "<a href='/home/game/".$cursorID."'>".$cursorID."</a>";
但这不会返回任何结果


思考可能出现的问题?

是的,有人一直在摆弄你的
ObjectId
s,它们不再是
ObjectId

您需要使用
ObjectId
s按它们进行查询,因此无法按
ObjectId
进行查询(PHP中的
MongoId

您应该能够在不将图形包装在
MongoId
中的情况下进行查询,因为,如果您在php.ini中设置了
native_long
(在较新的驱动程序中是默认设置),驱动程序应该自动为您来回转换
NumberLongs

因此,只需按
$result[''u id']
进行查询,而无需将其放入
MongoId


不过,需要注意的是,使用_id您并不是很好,我建议您再次使用
ObjectId
MongoId
)重新填充所有记录,因为这将比您当前使用的id更有效、更简单。

MongoId()函数是什么?它可以反转GameID吗(从50fde048f1568a204c0002a1到3.1677054844223E+18)?嗯,由于未知原因,您的PHP驱动程序根本无法识别
objectId
s,文档在您的数据库中是什么样子的?您可以粘贴控制台输出吗?您的_id可能已更改了类型,如果是,则无法通过objectid@Sammaye控制台输出如下:/*0/{“\u id”:NumberLong(“3292523252251813670”),“联赛”:“ncaab”,“比赛时间”:“2013-01-07T18:30:00”,“主队”:“辛辛那提”,“homeRank”:14,“awayTeam”:“圣母院”,“awayRank”:21}/1*/{“id”:NumberLong(“6877183749884304734”),“联赛”:“ncaab”,“比赛时间”:“2013-01-07T19:00:00”,“主队”:“宾夕法尼亚街”,“印第安纳州”,“awayTeam”:“印第安纳州”,“awayRank”:5}谢谢。我必须使用linux 64位php环境才能正常工作。还建议monogo团队使用objectID。
$cursorID = new MongoID($result['_id']);
$gameLink = "<a href='/home/game/".$cursorID."'>".$cursorID."</a>";
$gameID = new MongoID("50fde048f1568a204c0002a1"); //default
$con = new Mongo("mongodb://mongo.example.net"); // Connect to Mongo Server
$db = $con->selectDB('mydb');
$games = $db->games->find( array('_id'=>$gameID) );