Re: jsonb : find row by array object attribute

From: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
To: Rory Campbell-Lange <rory(at)campbell-lange(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: jsonb : find row by array object attribute
Date: 2018-12-30 22:14:19
Message-ID: 87pntiu0n9.fsf@news-spur.riddles.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

>>>>> "Rory" == Rory Campbell-Lange <rory(at)campbell-lange(dot)net> writes:

Rory> and data like this:
Rory> j
Rory> --------------------------------------------------
Rory> {"a": 1, "people": [{"id": 2002}, {"id": 2004}]}
Rory> {"a": 3, "people": [{"id": 2003}, {"id": 2005}]}
Rory> (2 rows)

Rory> I'd like to be able to find any row with a particular people id
Rory> attribute.

where j @> '{"people":[{"id":2003}]}'

(meaning: j contains a key "people" whose value is an array containing
an element {"id":2003})

Since @> can use GIN indexes, you should usually try and find a search
condition using it before resorting to playing with -> or expanding out
array values.

--
Andrew (irc:RhodiumToad)

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andrew Gierth 2018-12-30 22:31:47 Re: jsonb : find row by array object attribute
Previous Message Tom Lane 2018-12-30 21:47:10 Re: jsonb : find row by array object attribute