JSON 从 mongodb 检索到的数据在字段中明确添加了格式,例如 ({"field": {$numberInt: "20"}})。如何处理这些数据?
JSON data getting retrieved from mongodb with formats added explicitly inside field e.g.({"field": {$numberInt: "20"}}). How to process that data?
我使用 mongo 导入将数据从 csv 文件导入 mongodb。我正在尝试从 Mongodb 领域服务中检索数据。条目返回数据如下:
{
"_id": "6124edd04543fb222e",
"Field1": "some string",
"Field2": {
"$numberDouble": "145.81"
},
"Field3": {
"$numberInt": "0"
},
"Field4": {
"$numberInt": "15"
},
"Field5": {
"$numberInt": "0"
}
如何通过删除 $numberInt 和 $numberDouble 将其转换为正常的 JSON,例如:
{
"_id": "6124edd04543fb222e",
"Field1": "some string",
"Field2": 145.8,
"Field3": 0,
"Field4": 15,
"Field5": 0
}
不同文档的字段也不同,不能直接使用Mongoose。有什么解决办法吗?
也有助于了解为什么将数字存储为 $numberInt:"".
编辑:
对于遇到同样问题的人,我就是这样解决的。
文档数组采用 EJSON 格式,而不是像赞成答案中所说的 JSON 格式。为了将其转换回正常的 JSON,我使用 JSON.stringify 首先将我从 map 函数获得的每个文档转换为字符串,然后使用 EJSON.parse 和
对其进行解析
{strict:false}(这个选项很重要)
选项将其转换为正常 JSON。
{restaurants.map((restaurant) => {
restaurant=EJSON.parse(JSON.stringify(restaurant),{strict:false});
}
EJSON.parse documentation 这里。要安装导入的模块是mongodb-extjson.
带$numberInt
等的格式称为(MongoDB)扩展JSON.
您在输出端获取它是因为这是您插入数据的方式(意味着您插入的数据不正确,您需要修复摄取端)或因为您请求扩展 JSON 序列化。
如果数据库中的数据是正确的,并且你想要非扩展JSON输出,你通常需要编写自己的序列化程序到JSON,因为如何格式化有多种可能性数据。 MongoDB 的 JSON 输出格式是您在第一个引用中看到的扩展 JSON。
我使用 mongo 导入将数据从 csv 文件导入 mongodb。我正在尝试从 Mongodb 领域服务中检索数据。条目返回数据如下:
{
"_id": "6124edd04543fb222e",
"Field1": "some string",
"Field2": {
"$numberDouble": "145.81"
},
"Field3": {
"$numberInt": "0"
},
"Field4": {
"$numberInt": "15"
},
"Field5": {
"$numberInt": "0"
}
如何通过删除 $numberInt 和 $numberDouble 将其转换为正常的 JSON,例如:
{
"_id": "6124edd04543fb222e",
"Field1": "some string",
"Field2": 145.8,
"Field3": 0,
"Field4": 15,
"Field5": 0
}
不同文档的字段也不同,不能直接使用Mongoose。有什么解决办法吗? 也有助于了解为什么将数字存储为 $numberInt:"".
编辑:
对于遇到同样问题的人,我就是这样解决的。
文档数组采用 EJSON 格式,而不是像赞成答案中所说的 JSON 格式。为了将其转换回正常的 JSON,我使用 JSON.stringify 首先将我从 map 函数获得的每个文档转换为字符串,然后使用 EJSON.parse 和
对其进行解析{strict:false}(这个选项很重要)
选项将其转换为正常 JSON。
{restaurants.map((restaurant) => {
restaurant=EJSON.parse(JSON.stringify(restaurant),{strict:false});
}
EJSON.parse documentation 这里。要安装导入的模块是mongodb-extjson.
带$numberInt
等的格式称为(MongoDB)扩展JSON.
您在输出端获取它是因为这是您插入数据的方式(意味着您插入的数据不正确,您需要修复摄取端)或因为您请求扩展 JSON 序列化。
如果数据库中的数据是正确的,并且你想要非扩展JSON输出,你通常需要编写自己的序列化程序到JSON,因为如何格式化有多种可能性数据。 MongoDB 的 JSON 输出格式是您在第一个引用中看到的扩展 JSON。