mongodb - 从 mongodb 检索 JSON 数据,并在字段中显式添加格式,例如({“field”:{$numberInt:“20”}})。如何处理这些数据?
问题描述
我使用 mongo import 将数据从 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 格式,而不是像在 upvoted 答案中所说的 JSON。为了将其转换回普通 JSON,我使用 JSON.stringify 首先将我从 map 函数获得的每个文档转换为字符串,然后使用 EJSON.parse 解析它
{strict:false}(这个选项很重要)
将其转换为普通 JSON 的选项。
{restaurants.map((restaurant) => {
restaurant=EJSON.parse(JSON.stringify(restaurant),{strict:false});
}
EJSON.parse文档在这里。要安装和导入的模块是mongodb-extjson。
解决方案
带有 etc. 的格式$numberInt
称为 (MongoDB) 扩展 JSON。
您在输出端得到它,或者因为这是您插入数据的方式(意味着您插入的数据不正确,您需要修复摄取端),或者因为您请求扩展 JSON 序列化。
如果数据库中的数据是正确的,并且您想要非扩展的 JSON 输出,您通常需要将自己的序列化程序写入 JSON,因为如何格式化数据有多种可能性。MongoDB 的 JSON 输出格式是您在第一次引用中看到的扩展 JSON。
推荐阅读
- c# - SSIS C#脚本任务不读取变量或参数
- angular - 从我的 Angular 火力库中获取用户个人资料
- google-chrome - 仅过滤有错误的请求 - Google chrome network
- android - 如何从一个对话框过渡到另一个对话框
- c++ - 是否在向量 C++ 中读取和写入向量线程安全操作?
- javascript - Javascript级联下拉加载问题
- python - 熊猫 %1 不是有效的 Win32 应用程序
- laravel - 无法通过 Docker 中的 Apache 访问我的 Laravel 项目 - /var/www/ 目录为空
- php - href 不适用于表 td,但它适用于 ul li
- django - 禁用“记住每个 SQL 查询”(Django)