This operator checks inclusion of the JSON value on the right hand side in the JSON value on the left hand side.
Objects
An empty Object matches any object
{} @> {} == True
{"a":1,"b":false} @> {} == True
Any key-value will be matched top-level
{"a":1,"b":{"c":true"}} @> {"a":1} == True
{"a":1,"b":{"c":true"}} @> {"b":1} == False
{"a":1,"b":{"c":true"}} @> {"b":{}} == True
{"a":1,"b":{"c":true"}} @> {"c":true} == False
{"a":1,"b":{"c":true"}} @> {"b":{c":true}} == True
Arrays
An empty Array matches any array
[] @> [] == True
[1,2,"hi",false,null] @> [] == True
Any array has to be a sub-set. Any object or array will also be compared as being a subset of.
[1,2,"hi",false,null] @> [1] == True
[1,2,"hi",false,null] @> [null,"hi"] == True
[1,2,"hi",false,null] @> ["hi",true] == False
[1,2,"hi",false,null] @> ["hi",2,null,false,1] == True
[1,2,"hi",false,null] @> [1,2,"hi",false,null,{}] == False
Arrays and objects inside arrays match the same way they'd be matched as being on their own.
[1,"hi",[false,3],{"a":[null]}] @> [{}] == True
[1,"hi",[false,3],{"a":[null]}] @> [{"a":[]}] == True
[1,"hi",[false,3],{"a":[null]}] @> [{"b":[null]}] == False
[1,"hi",[false,3],{"a":[null]}] @> [[]] == True
[1,"hi",[false,3],{"a":[null]}] @> [[3]] == True
[1,"hi",[false,3],{"a":[null]}] @> [[true,3]] == False
A regular value has to be a member
[1,2,"hi",false,null] @> 1 == True
[1,2,"hi",false,null] @> 5 == False
[1,2,"hi",false,null] @> "hi" == True
[1,2,"hi",false,null] @> false == True
[1,2,"hi",false,null] @> "2" == False
An object will never match with an array
[1,2,"hi",[false,3],{"a":null}] @> {} == False
[1,2,"hi",[false,3],{"a":null}] @> {"a":null} == False
Other values
For any other JSON values the (\@>.) operator
functions like an equivalence operator.
"hello" @> "hello" == True
"hello" @> "Hello" == False
"hello" @> "h" == False
"hello" @> {"hello":1} == False
"hello" @> ["hello"] == False
5 @> 5 == True
5 @> 5.00 == True
5 @> 1 == False
5 @> 7 == False
12345 @> 1234 == False
12345 @> 2345 == False
12345 @> "12345" == False
12345 @> [1,2,3,4,5] == False
true @> true == True
true @> false == False
false @> true == False
true @> "true" == False
null @> null == True
null @> 23 == False
null @> "null" == False
null @> {} == False