JSONB operator clarification
От | Bruce Momjian |
---|---|
Тема | JSONB operator clarification |
Дата | |
Msg-id | 20151006001926.GA9634@momjian.us обсуждение исходный текст |
Ответы |
Re: JSONB operator clarification
|
Список | pgsql-docs |
In studying our JSONB operators, I was confused about what they do based on the docs. I found that "contain within" means "contain the path/value", i.e. it has to match the path from the top level, not just anywhere inside the document: SELECT '{"a":1, "c" : {"b":2}}'::jsonb @> '{"a":1}'::jsonb; ?column? ---------- t SELECT '{"a":1, "c" : {"b":2}}'::jsonb @> '{"b":2}'::jsonb; ?column? ---------- f You can also specify only the top part of the path: SELECT '{"a":1, "c" : {"b":2}}'::jsonb @> '{"c":{}}'::jsonb; ?column? ---------- t SELECT '{"a":1, "c" : {"b":2}}'::jsonb @> '{"d":{}}'::jsonb; ?column? ---------- f I also found that "key/element string exist" really means "string exist as a top-level key", e.g. SELECT '{"a":1, "c" : {"b":2}}'::jsonb ? 'a'; ?column? ---------- t SELECT '{"a":1, "c" : {"b":2}}'::jsonb ? 'b'; ?column? ---------- f The attached doc patch and SQL comment update improves this. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Roman grave inscription +
Вложения
В списке pgsql-docs по дате отправления: