PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

आप सरणी अनुक्रमणिका में Postgresql JSONB सरणी कैसे बनाते हैं?

एक GIN अनुक्रमणिका है आप क्या चाहते हैं?

ऐसा लगता है कि आपको सबसे पहले आईडी को एक ऐसे रूप में व्यवस्थित करने की आवश्यकता है जो अधिक ट्रैक्टेबल हो। मैं अजगर से अधिक परिचित हूं, क्योंकि मैं JSON में हेरफेर करने के PostgreSQL तरीकों से हूं, इसलिए मैंने इस उद्देश्य के लिए PL/Python का उपयोग किया।

   DROP TABLE IF EXISTS ids;

CREATE TABLE ids (user_id integer, a jsonb);

INSERT INTO ids VALUES 
    (1, '{"b": [{"ids": [1, 2, 3, 4]}, {"ids": [2, 3, 4]}, {"ids": [1, 2, 4]}]}'),
    (2, '{"b": [{"ids": [2, 3, 4]}]}'),
    (3, '{"b": [{"ids": [4, 5, 6]}, {"ids": [6, 7, 8]}]}');

CREATE OR REPLACE FUNCTION extract_ids(a_json jsonb) 
RETURNS int[] AS
$BODY$
    import json
    s = set()
    a = json.loads(a_json)
    for key in a.keys():
        for id_set in a[key]:
            s.update(id_set['ids'])
    return(list(s))
$BODY$ LANGUAGE plpythonu IMMUTABLE;

SELECT user_id, extract_ids(a)
FROM ids;

CREATE INDEX ON ids USING gin (extract_ids(a));

SELECT user_id 
FROM ids
WHERE ARRAY[3] <@ extract_ids(a);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब मैं पूरी तालिका को स्पष्ट रूप से लॉक कर रहा हूं तो पोस्टग्रेस समवर्ती पंक्ति अद्यतन त्रुटि क्यों देता है?

  2. क्या तैयार विवरण या QueryRunner.update() में तालिका या स्तंभ नाम के लिए पैरामीटर की आपूर्ति करना संभव है?

  3. PostgreSQL में लघु दिन का नाम प्राप्त करें

  4. पोस्टग्रेस स्ट्रिंग से अंतिम शब्द प्राप्त करना, घोषणात्मक रूप से

  5. रेल है_मनी:पीजी के माध्यम से ::त्रुटि:त्रुटि:कॉलम संदर्भ आईडी अस्पष्ट त्रुटि है