JmesPath find where not exists

2020-04-21 02:09发布

问题:

The following JmesPath expression finds instances that have been tagged with a team:

"Instances[?Tags[?Key=='team']]"

Do you know how to find instances that are not tagged with a team?

I have tried:

"Instances[?!Tags[?Key=='team']]"
-> !Tags[?Key=='team']]: event not found
"Instances[?null==Tags[?Key=='team']]"
-> []  <-- wrong answer
"Instances[?!not_null(Tags[?Key=='team'])]"
-> !not_null: event not found

Many thanks in advance!

Sample input:

{ "Instances":
  [ { "id": "i-911"
    , "Tags":
      [ {"Key":"owner", "Value":"Edu"}
      , {"Key":"team", "Value":"forensics"}
      ]
    , "many other keys": "stuff"
    }
  , { "id": "i-999"
    , "Tags":
      [ {"Key":"owner", "Value":"Edu"}
      , {"Key":"note", "Value":"No team!"}
      ]
    , "many other keys": "stuff"
    }
  ]
}

回答1:

Solved: Parentheses are the answer:

"Instances[?!(Tags[?Key=='team'])]"


标签: jmespath