Json 如何使用jq获得完整的对象/数组?

Json 如何使用jq获得完整的对象/数组?,json,jq,weaviate,Json,Jq,Weaviate,我在跑步: $ jq ".environments[] | select(.name | contains(\"docker\")) | .database.database_config.host = \"${DGRAPHIP}\"" weaviate.conf.json 在此文件中: 其输出为(如果DGRAPHIP=1.2.3.4): 简单调整: jq --arg dgraphip "1.2.3.4" '{"environments" : .environments | map(sel

我在跑步:

$ jq ".environments[] | select(.name | contains(\"docker\")) | .database.database_config.host = \"${DGRAPHIP}\"" weaviate.conf.json
在此文件中:

其输出为(如果
DGRAPHIP=1.2.3.4
):

简单调整:

jq --arg dgraphip "1.2.3.4" '{"environments" : .environments 
 | map(select(.name | contains("docker")) 
 | .database.database_config.host = $dgraphip)}' weaviate.conf.json
输出:

{
  "environments": [
    {
      "name": "docker",
      "database": {
        "name": "dgraph",
        "database_config": {
          "host": "1.2.3.4",
          "port": 9080
        }
      },
      "schemas": {
        "Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
        "Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
      },
      "mqttEnabled": false
    }
  ]
}

下面是另一种使用

示例运行(假设数据在
data.json
中)


您希望结果中只包含
docker
环境,还是同时包含所有其他环境(未修改)?提示:不要使用插值创建过滤器;将
$DGRAPHID
作为实参数传递。这也简化了引用:
jq--arg newhost“$DGRAPHID”。环境…|。database.database\u config.host=$newhost'
。谢谢@chepner。完全有道理。妈的,我自己都搞不懂。谢谢你,伙计!
jq --arg dgraphip "1.2.3.4" '{"environments" : .environments 
 | map(select(.name | contains("docker")) 
 | .database.database_config.host = $dgraphip)}' weaviate.conf.json
{
  "environments": [
    {
      "name": "docker",
      "database": {
        "name": "dgraph",
        "database_config": {
          "host": "1.2.3.4",
          "port": 9080
        }
      },
      "schemas": {
        "Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
        "Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
      },
      "mqttEnabled": false
    }
  ]
}
.environments |= map(      
     select(.name | contains("docker"))
   | .database.database_config.host = "1.2.3.4"
) 
$ jq -M '.environments |= map(select(.name | contains("docker")) | .database.database_config.host = "1.2.3.4")' data.json
{
  "environments": [
    {
      "name": "docker",
      "database": {
        "name": "dgraph",
        "database_config": {
          "host": "1.2.3.4",
          "port": 9080
        }
      },
      "schemas": {
        "Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
        "Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
      },
      "mqttEnabled": false
    }
  ]
}