这里是我的文件:
{
"name":"name1",
"oid1":"oid1-1",
"oid2":"oid2-1"
}{
"name":"name2",
"oid1":"oid1-2",
"oid2":"oid2-2"
}另一方:
{
"id": "id1",
"info": "info1",
"oid1":"oid1-1",
"oid2":"oid2-1"
}
{
"id": "id2",
"info": "info2",
"oid1":"oid1-1",
"oid2":"oid2-1"
}
{
"id": "id3",
"info": "info3",
"oid1":"oid1-2",
"oid2":"oid2-2"
}我需要将上面的文件嵌套到第一批文件中:
{
"name":"name1",
"oid1":"oid1-1",
"oid2":"oid2-1",
"ids":[
{
"id":"id1",
"info":"info1"
},
{
"id":"id2",
"info":"info2"
}
]
}{
"name":"name2",
"oid1":"oid1-2",
"oid2":"oid2-2",
"ids":[
{
"id":"id3",
"info":"info3"
}
]
}因此,我需要嵌套到第一个文档中,哪些文档是parent.oid1 == nest.oid1 && parent.oid2 == nest.oid2的。
我没有得到任何合理的东西。
有什么想法吗?
发布于 2022-02-07 21:00:12
如果“我的文档”存储在一个名为mine.json的文件中,而“另一边”是文件others.json的内容,则对其他文件进行--slurpfile,并根据select添加它们
jq --slurpfile others others.json '
. as $mine
| . + {ids: ($others | map(
select(.oid1 == $mine.oid1 and .oid2 == $mine.oid2)
| {id, info}
))}
' mine.json{
"name": "name1",
"oid1": "oid1-1",
"oid2": "oid2-1",
"ids": [
{
"id": "id1",
"info": "info1"
},
{
"id": "id2",
"info": "info2"
}
]
}
{
"name": "name2",
"oid1": "oid1-2",
"oid2": "oid2-2",
"ids": [
{
"id": "id3",
"info": "info3"
}
]
}演示 (使用带字段mine和others而不是文件的对象)
https://stackoverflow.com/questions/71025169
复制相似问题