mongodb 如何将所有嵌套的ObjectId重新格式化为字符串值?

oprakyz7  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(152)

我尝试将MongoDB记录加载到SQL数据库中,其中每个对象只是Mongo数据转储。我有2-3层嵌套-我想知道什么是最好的方法来将所有ObjectID重新格式化为字符串(或者只是不捕获任何_id,因为它们都有一个UUID对应项)。
我尝试过将每个对象转换为字符串,再转换回dict,但没有成功。抛出的错误是“JSON对象不可序列化”我尝试过$toString,但没有处理嵌套列表。
蒙哥医生大概是这样的:

{ 
_id: ObjectId('xxxxxx'), 
name: 'steve',     
data: {     
    _id: ObjectId('xxxxxx'),
    value: xx,     
    } 
}

也可以有另一层嵌套。我希望它变成:

{ 
_id: 'xxxxxx',  
name: 'steve',     
data: {     
    _id: 'xxxxxx',     
    value: xx,     
    } 
}

文档的大小,递归将花费太长时间。当在BigQuery中作为JSON列加载时,我得到错误“ObjectID不可JSON序列化”,因此无法上传。

rekjcdws

rekjcdws1#

JSON模块在类型不可序列化时提供一个默认值,它能够将每个ObjectID转换为str,并准备上传到BQ。

json.dumps(data, default=str)

相关问题