Я создал эту вершину:
test=# SELECT * FROM cypher('graph', $$
CREATE (s:student{name:"Muneeb", courses: ["OOP", "DS", "Programming", "Android"]})
RETURN s
$$) as (student agtype);
----------------------------------------------------------------------------------------
student
----------------------------------------------------------------------------------------
{"id": 3377699720527873, "label": "student", "properties": {"name": "Muneeb", "courses": ["OOP", "DS", "Programming", "Android"]}}::vertex
(1 row)
Я хочу получить длину списка courses
. Как мне это сделать.
Я пробовал ARRAY_LENGTH
но не получилось.
Вы можете использовать функцию размер.
SELECT * FROM cypher('graph', $$
MATCH (u)
RETURN size(u.courses)
$$) as (student agtype);
Результат
student
---------
4
(1 row)
В дополнение к ответу таха вы также можете использовать jsonb_array_length: Пример кода для этого
SELECT jsonb_array_length((student.properties ->> 'courses')::jsonb) AS
num_courses
FROM cypher('graph', $$
MATCH (s:student)
WHERE s.name = 'Muneeb'
RETURN s
$$) AS (student agtype);
Выход будет:
num_courses
-------------
4
(1 row)
Для этого вы можете использовать функцию размера size() возвращает длину списка.
вот запрос SELECT * FROM cypher('graph_name_here', $$ МАТЧ (у) ВОЗВРАЩАЕМЫЙ размер (u.name_of_list_you_want_size) $$) as (тип студента);
или
это от возраста документация ссылка на документацию официальная ссылка на документацию
SELECT *
FROM cypher('graph_name', $$
RETURN size(['Alice', 'Bob'])
$$) as (size_of_list agtype);