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。