>我正在尝试使用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']}";