php - 尝试提取 Mongo ID 十六进制代码时无法将 MongoId 类型的对象用作数组

标签 php mongodb objectid

我正在尝试使用 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/

相关文章:

php - laravel Eloquent ORM delete() 方法

java - 使用复合自定义 _id 插入 Mongodb 时出现 MongoWriteException

java - 什么替换了新的 mongo java 驱动程序中的 ObjectId.massageToObjectId()?

mongodb - 使用 Mongo ObjectId 类型作为 Meteor 用户 ID

javascript - Symfony 4 - 设置 Braintree 表单

PHP : applying html_entity_decode to whole result array

php - 实体命名空间子类在 Doctrine 中不起作用

java - 在 MongoDB Java 驱动程序中聚合时解析数据类型

mongodb - 检查 mongocxx collection.create_index() 是否成功

ios - 核心数据 : ObjectID Error: "No known class method for selector ' managedObjectContext'