0

I am using postgresql and I have this table on dataset, that some columns are jsonb.

 create_table "table", force: :cascade do |t|
   t.string "title", null: false
   t.text "objectives"
   t.bigint "institution_id", null: false
   t.integer "code"
   t.jsonb "external_data", default: {}
   t.string "external_id"
   t.jsonb "extra_fields", default: []
   t.bigint "template_id"

So, the result for "objectives" column is like that:

{"blocks":[{"key":"dek2k","text":"Objetivo Geral","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":14,"style":"fontsize-12pt"},{"offset":0,"length":14,"style":"fontfamily-Arial"},{"offset":0,"length":14,"style":"fontsize-14"}],"entityRanges":[],"data":{"text-align":"start"}},{"key":"ct1vn","text":"Conhecer e aplicar ferramentas para análise da mídias em sua respectiva relação com a cognição e o design, tendo como ênfase os estudos das materialidades dos meios de comunicaçõe e seus aspectos sensoriais.","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":216,"style":"color-rgb(0,0,0)"},{"offset":0,"length":216,"style":"fontsize-12pt"},{"offset":0,"length":216,"style":"fontfamily-Arial"},{"offset":0,"length":216,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"8jshq","text":"","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}},{"key":"8jdns","text":"Objetivos Específicos","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":22,"style":"fontsize-12pt"},{"offset":0,"length":22,"style":"fontfamily-Arial"},{"offset":0,"length":22,"style":"fontsize-14"}],"entityRanges":[],"data":{"text-align":"start"}},{"key":"6tncp","text":"O estudante deverá ser capaz de:","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":33,"style":"color-rgb(0,0,0)"},{"offset":0,"length":33,"style":"fontsize-12pt"},{"offset":0,"length":33,"style":"fontfamily-Arial"},{"offset":0,"length":33,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"85t8d","text":"Compreender a importância da comunicação multissensorial e seus impactos no","type":"unordered-list-item","depth":0,"inlineStyleRanges":[{"offset":0,"length":78,"style":"color-rgb(0,0,0)"},{"offset":0,"length":78,"style":"fontsize-12pt"},{"offset":0,"length":78,"style":"fontfamily-Arial"},{"offset":0,"length":78,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"23i4","text":"cenário da publicidade e propaganda;","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":37,"style":"color-rgb(0,0,0)"},{"offset":0,"length":37,"style":"fontsize-12pt"},{"offset":0,"length":37,"style":"fontfamily-Arial"},{"offset":0,"length":37,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"7afba","text":"Refletir em torno das articulações entre diferentes sensorialidades que participam do","type":"unordered-list-item","depth":0,"inlineStyleRanges":[{"offset":0,"length":87,"style":"color-rgb(0,0,0)"},{"offset":0,"length":87,"style":"fontsize-12pt"},{"offset":0,"length":87,"style":"fontfamily-Arial"},{"offset":0,"length":87,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"3cf0b","text":"processo de comunicação;","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":26,"style":"color-rgb(0,0,0)"},{"offset":0,"length":26,"style":"fontsize-12pt"},{"offset":0,"length":26,"style":"fontfamily-Arial"},{"offset":0,"length":26,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"80scf","text":"Compreender a relação direta entre a emergência de um meio e de suas linguagens e","type":"unordered-list-item","depth":0,"inlineStyleRanges":[{"offset":0,"length":84,"style":"color-rgb(0,0,0)"},{"offset":0,"length":84,"style":"fontsize-12pt"},{"offset":0,"length":84,"style":"fontfamily-Arial"},{"offset":0,"length":84,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"4s662","text":"a produção de novos modos de perceber e conhecer.","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":51,"style":"color-rgb(0,0,0)"},{"offset":0,"length":51,"style":"fontsize-12pt"},{"offset":0,"length":51,"style":"fontfamily-Arial"},{"offset":0,"length":51,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"4crr0","text":"Compreender, analisar e desenvolver estratégias criativas de comunicação por meio","type":"unordered-list-item","depth":0,"inlineStyleRanges":[{"offset":0,"length":84,"style":"color-rgb(0,0,0)"},{"offset":0,"length":84,"style":"fontsize-12pt"},{"offset":0,"length":84,"style":"fontfamily-Arial"},{"offset":0,"length":84,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"f963p","text":"da arte e das linguagens multissensoriais para interfaces e ambientes digitais;","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":79,"style":"color-rgb(0,0,0)"},{"offset":0,"length":79,"style":"fontsize-12pt"},{"offset":0,"length":79,"style":"fontfamily-Arial"},{"offset":0,"length":79,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"dkc1n","text":"Criar ambientes multissensoriais e estratégias de ‘gamification’ em mensagens publicitárias contemporâneas, usando o conceito de flow para potencializar","type":"unordered-list-item","depth":0,"inlineStyleRanges":[{"offset":0,"length":155,"style":"color-rgb(0,0,0)"},{"offset":0,"length":155,"style":"fontsize-12pt"},{"offset":0,"length":155,"style":"fontfamily-Arial"},{"offset":0,"length":155,"style":"fontsize-14"}],"entityRanges":[],"data":{}},{"key":"avq4h","text":"experiências digitais.","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":23,"style":"color-rgb(0,0,0)"},{"offset":0,"length":23,"style":"fontsize-12pt"},{"offset":0,"length":23,"style":"fontfamily-Arial"},{"offset":0,"length":23,"style":"fontsize-14"}],"entityRanges":[],"data":{}}],"entityMap":{}}

I want to get in result only what is in "text". Sometimes it has just one "text" value, sometimes it has up to 15 or more. Considering this, I used this query:

SELECT cod
name,
array_agg(obj) AS obj
from ( SELECT 
external_id as cod,
title as name,
regexp_matches(objectives, 'text.+?:"(.+)"','ig') obj
FROM table
WHERE institution_id = 27
AND objectives != '[]'
)  a
GROUP BY cod, name

But I get the group of text strings that matches out of order. Like this:

{{"\","},{"a produção de novos modos de perceber e conhecer."},{"cenário da publicidade e propaganda;"},{"Compreender a importância da comunicação multissensorial e seus impactos no"},{"Compreender, analisar e desenvolver estratégias criativas de comunicação por meio"},{"Compreender a relação direta entre a emergência de um meio e de suas linguagens e"},{"Conhecer e aplicar ferramentas para análise da mídias em sua respectiva relação com a cognição e o design, tendo como ênfase os estudos das materialidades dos meios de comunicaçõe e seus aspectos sensoriais."},{"Criar ambientes multissensoriais e estratégias de ‘gamification’ em mensagens publicitárias contemporâneas, usando o conceito de flow para potencializar"},{"da arte e das linguagens multissensoriais para interfaces e ambientes digitais;"},{"experiências digitais."},{"Objetivo Geral"},{"Objetivos Específicos"},{"O estudante deverá ser capaz de:"},{"processo de comunicação;"},{"Refletir em torno das articulações entre diferentes sensorialidades que participam do"},{start}}

I need to get the text in the same order it appears in original value. So, in this example, the first "text" value that appears in code is:

{"Objetivo Geral"}

Second one is:

{"Conhecer e aplicar ferramentas para análise da mídias em sua respectiva relação com a cognição e o design, tendo como ênfase os estudos das materialidades dos meios de comunicaçõe e seus aspectos sensoriais."}

So, in an array, the first two text values should be like this:

{"Objetivo Geral"},{"Conhecer e aplicar ferramentas para análise da mídias em sua respectiva relação com a cognição e o design, tendo como ênfase os estudos das materialidades dos meios de comunicaçõe e seus aspectos sensoriais."}

If possible, not in array format (but it is ok if it is not possible).

I would like a result like this (text in same order it appears and with no arrays):

Objetivo Geral
Conhecer e aplicar ferramentas para análise da mídias em sua respectiva relação com a cognição e o design, tendo como ênfase os estudos das materialidades dos meios de comunicaçõe e seus aspectos sensoriais.
Objetivos Específicos
O estudante deverá ser capaz de:
Compreender a importância da comunicação multissensorial e seus impactos no
cenário da publicidade e propaganda;
Refletir em torno das articulações entre diferentes sensorialidades que participam do
processo de comunicação;
Compreender a relação direta entre a emergência de um meio e de suas linguagens e
a produção de novos modos de perceber e conhecer.
Compreender, analisar e desenvolver estratégias criativas de comunicação por meio
da arte e das linguagens multissensoriais para interfaces e ambientes digitais;
Criar ambientes multissensoriais e estratégias de ‘gamification’ em mensagens publicitárias contemporâneas, usando o conceito de flow para potencializar
experiências digitais.

Anyone can help?

0 Answers0