これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
pgroonga_result_to_jsonb_objects
関数2.3.0で追加。
pgroonga_result_to_jsonb_objects
関数はpgroonga_result_to_recordset
関数と似ています
pgroonga_result_to_jsonb_objects
関数はpgroonga_command
関数の結果のJSONをオブジェクトの配列のjsonb
データに変換します。変換されたjsonb
データはPostgreSQLのjsonb_array_elements
関数を使うとjsonb
のオブジェクトの集合に変換できます。一般的に、変換語のjsonb
データのほうが結果のJSONよりも扱いやすいです。
将来的にはGroongaのコマンドのすべての結果JSONフォーマットをサポートする予定ですが、現時点では次のコマンドだけサポートしています。
select
: command_version=1
select
: command_version=3
この関数の構文は次の通りです。
jsonb pgroonga_result_to_jsonb_objects(result)
result
はjsonb
型の値です。pgroonga_command
関数の結果のtext
をjsonb
にキャストすればこの関数に渡せます。
サンプルスキーマとデータは次の通りです。
CREATE TABLE memos (
content text
);
CREATE INDEX pgroonga_memos_index
ON memos
USING pgroonga (content);
INSERT INTO memos VALUES ('PGroonga (PostgreSQL+Groonga) is great!');
INSERT INTO memos VALUES ('Groonga is an embeddable full text search engine.');
以下はjsonb
データを返す例です。
SELECT jsonb_pretty(
pgroonga_result_to_jsonb_objects(
pgroonga_command(
'select',
ARRAY[
'table', pgroonga_table_name('pgroonga_memos_index')
]
)::jsonb
)
);
-- jsonb_pretty
-- ------------------------------------------------------------------------
-- [ +
-- { +
-- "_id": 1, +
-- "_key": 1, +
-- "content": "PGroonga (PostgreSQL+Groonga) is great!" +
-- }, +
-- { +
-- "_id": 2, +
-- "_key": 2, +
-- "content": "Groonga is an embeddable full text search engine."+
-- } +
-- ]
-- (1 row)
PostgreSQLのjsonb_array_elements
関数を使うと変換後のjsonb
データをjosnb
のオブジェクトの集合に変換できます。
SELECT jsonb_array_elements(
pgroonga_result_to_jsonb_objects(
pgroonga_command(
'select',
ARRAY[
'table', pgroonga_table_name('pgroonga_memos_index')
]
)::jsonb
)
);
-- jsonb_array_elements
-- ---------------------------------------------------------------------------------------
-- {"_id": 1, "_key": 1, "content": "PGroonga (PostgreSQL+Groonga) is great!"}
-- {"_id": 2, "_key": 2, "content": "Groonga is an embeddable full text search engine."}
-- (2 rows)