Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JmesPath find where not exists

Tags:

jmespath

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"
    }
  ]
}
like image 296
Max Murphy Avatar asked Feb 22 '17 16:02

Max Murphy


1 Answers

Solved: Parentheses are the answer:

"Instances[?!(Tags[?Key=='team'])]"
like image 121
Max Murphy Avatar answered Nov 10 '22 09:11

Max Murphy