JmesPath中如何与当前节点进行比较?

How to compare with the current node in JmesPath?

我有一个来自 Amazon AWS 的 JSON blob,描述了大量的负载均衡器。我想提取某个子网上所有负载均衡器的名称。我使用 Ansible,所以选择 JSON 位的语言是 JmesPath。你知道怎么做吗?

这是 JSON blob 的结构和我目前的尝试:

数据:

{
    "LoadBalancerDescriptions": [
        {
            "want": "Yes!",
            "Subnets": ["subnet-123456"],
            "LoadBalancerName": "foo"
        },
        {
            "want": "Yes!",
            "Subnets": ["subnet-9876","subnet-123456"],
            "LoadBalancerName": "bar"
        },
        {
            "want": "No.",
            "Subnets": ["subnet-123456"],
            "LoadBalancerName": "batmobile"
        }
    ]
}

尝试:
这里我使用的是golang命令行Jmespath客户端;相同的表达式应该在 Ansible 中工作:

cat ,elb--describe-load-balancers.json |\
jmespath "LoadBalancerDescriptions[?Subnets[?@='subnet-123456']].LoadBalancerName" |\
wc -l

到select Subnets 列表中具有subnet-123456 元素的所有节点并获取它们的名称:

LoadBalancerDescriptions[?contains(Subnets,'subnet-123456')].LoadBalancerName

我使用contains built-in函数作为过滤器。