我遇到了一个问题,即json文件中同一个键有时具有平面值,而其他情况下它具有额外的嵌套层次(对于我的目的来说是不必要的),然后包括相关的值。
该文件按换行符分隔,我正在尝试摆脱任何额外的层次。到目前为止,我只能在树的第一级出现嵌套层次的情况下做到这一点,使用以下方法:
下面的示例进一步说明了这一点。我最初所拥有的是:
我的脚本所做的事情(第二个
我实际上希望达到的目标是(递归复制所有
这个转换是日常流程的一部分,并且适用于多个文件,文件大小可达70GB,因此在遍历文件时速度可能成为一个潜在问题。问题源于MongoDB的不同类型:MongoDB中NumberLong和简单整数之间的差异?谢谢!
该文件按换行符分隔,我正在尝试摆脱任何额外的层次。到目前为止,我只能在树的第一级出现嵌套层次的情况下做到这一点,使用以下方法:
jq -c '[.] | map(.[] |= if type == "object" and (.number | length) > 0 then .numberLong else . end) | .[]' mongoDB.json
下面的示例进一步说明了这一点。我最初所拥有的是:
{
"name": "John",
"age": {
"numberLong": 22
}
}
{
"name": "Jane",
"age": 24
}
{
"name": "Dennis",
"age": 34,
"details": [
{
"telephone_number": 555124124
}
]
}
{
"name": "Frances",
"details": [
{
"telephone_number": {
"numberLong": 444245523
}
}
]
}
我的脚本所做的事情(第二个
numberLong
被忽略): {
"name": "John",
"age": 22
},
{
"name": "Jane",
"age": 24
}
{
"name": "Dennis",
"age": 34,
"details": [
{
"telephone_number": 555124124
}
]
}
{
"name": "Frances",
"details": [
{
"telephone_number": {
"numberLong": 444245523
}
}
]
}
我实际上希望达到的目标是(递归复制所有
numberLong
键的值到上一级,无论它们在文件中的位置):[
{
"name": "John",
"age": 22
},
{
"name": "Jane",
"age": 24
},
{
"name": "Dennis",
"age": 34,
"details": [
{
"telephone_number": 555124124
}
]
},
{
"name": "Frances",
"details": [
{
"telephone_number": 444245523
}
]
}
]
这个转换是日常流程的一部分,并且适用于多个文件,文件大小可达70GB,因此在遍历文件时速度可能成为一个潜在问题。问题源于MongoDB的不同类型:MongoDB中NumberLong和简单整数之间的差异?谢谢!