JSONB (JSON Blob) datatype in Postgres is used to save JSON data. We can search on JSONB type of column after creating an index on it.
For example:
Usage in PostgreSQL:
1. Create table and index
CREATE TABLE tests ( id integer NOT NULL, email citext NOT NULL, address jsonb NOT NULL, CONSTRAINT tests_pkey PRIMARY KEY (id) ) WITH ( OIDS=FALSE );
— Index: tests_address_idx
CREATE INDEX tests_address_idx ON tests USING gin (address);
2. Insert into table
insert into tests(id,email,address) values(2,'kailash@mail.com','{"city":"chd"}');
Usage in CakePHP:
3. Find records of city Moga
App::import('Model', 'Test'); $this->loadModel('Test'); $result = $this->Test->find('all',array('conditions'=>array( 'address @> '=>'{ "city" : "moga" }' )));
The result of the query:
Array ( [0] => Array ( [Test] => Array ( [id] => 1 [email] => email@mail.com [address] => {"city": "moga"} ) ) )