Как получить полный график в формате JSON из NEO4J в JavaScript

Я вижу apoc.export.json.data, но не вижу полного примера рабочего кода.

Я предполагаю, что запрос MATCH позволит вам получить любой график:

MATCH g=(someNode)-[someRel]-() return g
CALL apoc.export.json.data( g )

Затем, надеюсь, APOC вернет JSON всех узлов и ребер в наборе данных, полученном в результате запроса. Ожидаемый JSON:

{
  nodes:[
    { id:a1a1 , labels:[Something] , prop_a:99 },
    { id:a2a2 , labels:[Something] , prop_a:77 },
    { id:a3a3 , labels:[User] ,      prop_a:33 }
  ],
  edges:[
    { id:a1a1 , labels:[OWNS] , prop_a:99 },
    { id:a2a3 , labels:[OWNS] , prop_a:77 },
    { id:a4a5 , labels:[HAS] ,  prop_a:33 }
  ]
}

Пожалуйста, дайте нам образец ожидаемого результата. Спасибо.

jose_bacoy 23.11.2022 00:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо использования APOC вы можете создать свой собственный вывод, как показано ниже;

MATCH   g = ()-[]-()  
RETURN {nodes: apoc.coll.flatten(collect(distinct nodes(g))), 
        edges: apoc.coll.flatten(collect(distinct relationships(g))) } as output

Я использовал версию Enterprise версии 5.4, так что она тоже должна работать.

Пример результата:

На Neo4j V5 это не работает, как в примере выше.

Om Solari 14.02.2023 06:47

какая ошибка или вывод в V5? Я использую версию 4.4.

jose_bacoy 14.02.2023 13:05

Я отредактировал свой ответ и использовал песочницу Neo4j версии 5.4.

jose_bacoy 14.02.2023 16:27

Я тоже использую 5.4. Если вы сделаете крошечный график и посмотрите на результат JSON, исходящий от драйвера, все удвоится. Удвойте ребра, а затем удвойте узлы на каждый узел, так что 4X

Om Solari 14.02.2023 16:45

Графический интерфейс Neo4J делает его похожим на возвращаемый график, но базовые данные, поступающие от драйвера, возвращают массив массивов и массив из двух узлов для каждого узла.

Om Solari 14.02.2023 17:01

apoc.coll.toSet(apoc.coll.flatten(collect(nodes(g))))) возвращает желаемый результат, как в исходном примере выше, но требует apoc

Om Solari 14.02.2023 17:13

Я воспользовался вашим предложением, а также добавил узлы DISTINCT (g) для удаления дубликатов. Спасибо.

jose_bacoy 14.02.2023 17:26

Спасибо, @jose_bacoy. Действительно, было бы неплохо, если бы APOC не был необходим, так как он недоступен по умолчанию в Community Edition.

Om Solari 17.02.2023 08:17

Другие вопросы по теме