私はテーブルを作成しました:
CREATE TABLE mytable (
uuid int,
answers jsonb
);
いくつかのJSON値とIDを挿入しました:
db.query('insert into mytable(uuid,answers) values($1,$2::jsonb)',
[1,{ "user" : "1", "ans" : "Answer of 1" }])
Postgresのクライアントとしてノードjsとpgを使用しています。
データが正常に入力され、期待どおりに行が返されます。
SELECT answers FROM mytable
{"ans": "Answer of 1","user": "1"}
しかし、値1で「user」の「ans」の値を取得しようとすると、エラーが返されました。
SELECT
elements ->> 'ans'
FROM
mytable,
jsonb_array_elements(answers) elements
WHERE
elements ->> 'user' = '1'
ERROR: cannot extract elements from an object
SQL state: 22023
で、この質問、あなたはJSON配列を挿入しました:[{...}, {...}]
。これで、SELECT
ステートメントの結果セットは、単純なオブジェクトを挿入したように見えます{...}
。もちろん、あなたが呼び出すことができませんjsonb_array_elements()
:JSON配列のためである配列を持つデモ、配列なしのデモ。
したがって、JSON配列を挿入する場合は、JSONオブジェクトの前後に配列中括弧を追加して入力パラメーターを調整する必要があります[...]
。
配列ではなく単純なJSONオブジェクトを挿入する場合は、このクエリを使用すると、配列を拡張する手順を節約できます。オブジェクトを直接呼び出すことができます。
SELECT
uuid,
answers ->> 'ans'
FROM
mytable
WHERE
answers ->> 'user' = '1'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加