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



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

相关内容

  • 没有找到相关文章

最新更新