【发布时间】:2013-01-05 04:06:36
【问题描述】:
我正在使用运行 PHP 5.4 和 PHP Mongo 驱动程序 from here 的 Windows xampp 服务器。
我正在使用以下方式查询数据:
$results = $collection->find( array('league'=>'nba') );
foreach ($results as $user) {
var_dump($user);
echo "</br>";
}
结果:
array(5) { ["_id"]=> float(3.1677054844223E+18) ["league"]=> string(3) "nba" ["homeTeam"]=> string(10) "Washington" ...
我正在将 ID 转换为字符串:
$cursorID = new MongoID($result['_id']);
$gameLink = "<a href='/home/game/".$cursorID."'>".$cursorID."</a>";
将 ID 从浮点数转换为以下值:50fde048f1568a204c0002a1 并尝试查询游戏详情:
$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) );
但这不会返回任何结果。
对可能出了什么问题的想法?
【问题讨论】:
-
什么是 MongoID() 函数?是否可以反转 GameID(从 50fde048f1568a204c0002a1 到 3.1677054844223E+18)?
-
嗯,由于某种未知原因,您的 PHP 驱动程序根本无法识别
objectIds,您的数据库中的文档是什么样的?您可以粘贴控制台输出吗?您的 _id 可能已更改类型,如果是,则您无法通过 objectid 查询 -
@Sammaye 控制台输出是这样的: /* 0 / { "_id" : NumberLong("3292523252251813670"), "league" : "ncaab", "gameTime" : "2013- 01-07T18:30:00”,“homeTeam”:“Cincinnati”,“homeRank”:14,“awayTeam”:“Notre Dame”,“awayRank”:21 } / 1 */ { “_id” :NumberLong(“6877183749884304734”),“联赛”:“ncaab”,“gameTime”:“2013-01-07T19:00:00”,“homeTeam”:“Penn St.”,“awayTeam”:“Indiana”, “离开排名”:5 }