当前位置: 首页 > 知识库问答 >
问题:

MongoDB\BSON\ObjectID在来自MongoDB的JSON编码中丢失

王俊楚
2023-03-14

我在从MongoDB数据库检索ObjectID时遇到了一个问题,但在通过json_encode运行时,“_id”值总是消失。数组中的所有其他数据都存在。我的代码如下:

$data = array('_id' => new MongoDB\BSON\ObjectID(), 'title' => 'abc123');

 //ID Is there!
 print_r($data);
 //ID IS EMPTTYy!!!
 print_r(json_encode($data));
 exit();

结果如下:

Array ( [_id] => MongoDB\BSON\ObjectID Object ( [oid] => 56d9d2687e34d70d3a304c46 ) [title] => abc123 ) 

{"_id":{},"title":"abc123"}

至少,_id应该包含一个对象或数字。我的问题是什么在剥离\MongoDB\BSON\ObjectID,以及如何让它保留下来?

共有2个答案

裴华荣
2023-03-14

@malarzm答案的示例代码:

$output = [];
foreach( $data as $key => $val){
    $val->_id = strval($val->_id);
    $output[$key] = $val;
}

echo json_encode( $output );
拓拔嘉运
2023-03-14

我的问题是什么是剥离\MongoDB\BSON\ObjectID

json_encode将只对遇到的对象的public属性进行编码。

我怎样才能让它留下来?

可以在编码之前将其转换为字符串。

 类似资料:
  • 新Gson()。toJson(新ObjectId()) 当我执行上述操作时,我得到的输出是 “_id”:{“_time”:1374347520,“_machine”:-1025067326,“_inc”:585905201,“_new”:false} 但事实上我希望它像 _id:{$id:51eae100c2e6b6c222ec3431} 这是常见的mongodb ID格式。Java中更可取的方法

  • 主要内容:创建新的 ObjectId,创建文档的时间戳,将 ObjectId 转换为 String本节我们来介绍一下 MongoDB 中的 ObjectId 的组成,ObjectId 是一个 12 字节的 BSON 类型,具有以下结构: 前 4 个字节表示时间戳; 接下来的 3 个字节表示机器标识符; 紧接着的 2 个字节由进程 id(PID)组成; 最后 3 个字节是一个随机计数器的值。 MongoDB 使用 ObjectId 作为每个文档 _id 字段的默认值,而且该值可以在创建文档时自动

  • 我试图使分页工作与MongoDB没有跳过(); 在mongo shell中,我通过查询得到了以下结果,但在Javascript中是空的[]; 我认为我做的ObjectID是错误的,我使用“mongodb ObjectID”和“mongojs”libs与Node一起使用。js。 Mongo外壳: 输出: JavaScript 我如何得到相同的结果,与我的查询在JS? 使用文档中的$oid进行编辑:

  • 问题内容: 我正在尝试将对象存储在MongoDB数据库中(使用MongoDB 3.0.2),并且在尝试使用错误消息对对象进行编码时得到提示 我已经编写并包含了对象的编解码器。详细信息如下。 我尝试存储的对象,具有以下成员变量: 我编写了以下编解码器来对数据库中的对象进行编码: 由于MongoDB当前不支持,因此我编写了以下编解码器来对数据库中的对象进行编码: 我在实例化MongoClient时在M

  • 问题内容: 我正在使用https://github.com/mongodb/mongo-go- driver ,目前正在尝试实现这种结构的部分更新 例如,如果我有 然后,我希望存储文档中唯一的“标题”字段将被更改。 我需要写类似 问题是我不想用或手动编码每个非空字段。我尝试使用但出现错误 无法为* models.NoteUpdate类型创建元素,请尝试使用bsoncodec.ConstructEl

  • 问题内容: 我需要使用pymongo用python搜索ObjectId,但是我总是会收到此错误。有什么想法如何搜索? 问题答案: 我使用pymongo 2.4.1。