JmesPath find where not exists
Asked Answered
E

1

10

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"
    }
  ]
}
Ericaericaceous answered 22/2, 2017 at 16:23 Comment(0)
E
18

Solved: Parentheses are the answer:

"Instances[?!(Tags[?Key=='team'])]"
Ericaericaceous answered 22/2, 2017 at 18:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.