2

我正在尝试使用 PHP 提取 Mongo ID ObjectId 的十六进制代码。每当我尝试提取 ID 号并将其存储在另一个变量中时,都会出现此错误。

var_dumping 由 Mongo 查询获取的文档内容给出如下内容:

object(MongoId)#242 (1) { ["$id"]=> string(24) "52795dc1613f4547710000df" } 

所以为了得到那个 $id 字符串,我这样做:

$mongo = new MongoClient("mongodb://username:password@localhost/database");
$db = $mongo->selectDb("database");
$collection = $db->selectCollection("someCollection");
$doc = $collection->find( /* some query to get a document here */ )->getNext();

$recordId = $doc["_id"]['$id'];

这给出了以下错误:

PHP Fatal error:  Cannot use object of type MongoId as array
4

1 回答 1

12

MongoIdvar_dump()的 有点误导。$doc["_id"]保存一个对象,而不是一个带有string的数组,您在最后一行代码中假设了它。

如果您想要 MongoId 的字符串表示形式,请执行以下操作:

$recordId = (string) $doc["_id"];

或者

$recordId = "{$doc['_id']}";
于 2014-01-10T19:33:58.597 回答