我正在尝试使用 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
最佳答案
MongoId 的 var_dump()
有点误导。 $doc["_id"]
包含一个对象,而不是一个带有字符串 的数组,您假设在你的最后一行代码中。
如果您想要 MongoId 的字符串表示,只需执行以下操作:
$recordId = (string) $doc["_id"];
或
$recordId = "{$doc['_id']}";
关于php - 尝试提取 Mongo ID 十六进制代码时无法将 MongoId 类型的对象用作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052611/