在尝试提取Mongo ID十六进制代码时,不能使用MongoId类型的对象作为数组

A. *_*uff 2 php mongodb objectid

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

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

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

所以要获得$ 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'];
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

PHP Fatal error:  Cannot use object of type MongoId as array
Run Code Online (Sandbox Code Playgroud)

lut*_*ens 11

var_dump()一个MongoId的有点missleading.将$doc["_id"]持有的对象,而不是一个数组字符串,你在你的代码最后一行承担.

如果你想要一个MongoId的字符串表示只是这样做:

$recordId = (string) $doc["_id"];
Run Code Online (Sandbox Code Playgroud)

要么

$recordId = "{$doc['_id']}";
Run Code Online (Sandbox Code Playgroud)