我正在使用运行PHP 5.4的Windows xampp服务器和PHP Mongo驱动程序from here。
我使用以下方式查询数据:
$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) );
但这不会返回任何结果。
关于可能出现什么问题的想法?
答案 0 :(得分:1)
是的,有些人一直在摆弄你的ObjectId
,他们不再是ObjectIds
。
您需要使用ObjectId
来查询它们,因此您无法通过ObjectId
(PHP中的MongoId
)进行查询。
你应该能够查询而不将图形包装在MongoId
中,但是,如果你在php.ini中设置了native_long
:http://php.net/manual/en/mongo.configuration.php#ini.mongo.native-long(默认情况下是我鼓掌的新手司机,司机应该为你自动转换NumberLongs
。
因此,只需$result['_id']
查询而不将其放入MongoId
。
但请注意,使用_id你并不是那么好,我建议你再次使用ObjectId
(PHP中的MongoId
)重新填充所有记录,因为这将是一个比你目前使用的ID更有效,更容易。