Выполните ПОИСКПОЗ на сборе / Разбейте сбор на части.

StackOverflow https://stackoverflow.com//questions/21042841

  •  21-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь имитировать функциональность браузера neo4j, чтобы отображать свой график во внешнем интерфейсе.Браузер neo4j выполняет два вызова для каждого запроса: первый вызов выполняет запрос, который пользователь вводит в поле запроса, а второй вызов использует поиск связей между каждым узлом, возвращенным в первом введенном пользователем запросе.

{
  "statements":[{
    "statement":"START a = node(1,2,3,4), b = node(1,2,3,4)
                 MATCH a -[r]-> b RETURN r;",
    "resultDataContents":["row","graph"],
    "includeStats":true}]
}

В моем приложении я хотел бы быть более эффективным, поэтому я хотел бы иметь возможность получать все мои узлы и отношения в одном запросе.Запрос, который у меня есть на данный момент:

START person = node({personId})
MATCH person-[:RELATIONSHIP*]-(p:Person)
WITH distinct p
MATCH p-[r]-(d:Data), p-[:DETAILS]->(details), d-[:FACT]->(facts)
RETURN p, r, d, details, facts

Этот запрос выполняется хорошо, но он не дает мне узлов «d» и «details», которые были связаны с исходным «человеком».

Я попытался объединить результаты «p» и «person» в коллекцию:

collect(p) + collect(person) AS people 

Но это не позволяет мне выполнить ПОИСКПОЗ для полученной коллекции.Насколько я понимаю, разбить коллекцию на части невозможно.

Единственный вариант, который я вижу на данный момент, — это разделить запрос на две части;верните коллекцию «collect(p) +collect(person) ASpeople», а затем используйте значения узла во втором запросе.Есть ли более эффективный способ выполнения этого запроса?

Это было полезно?

Решение

Если вы используете квантификатор *0.. RELATIONSHIP также соответствует глубине 0, что делает person такой же как p в этом случае.А * без указанных ограничений по умолчанию 1..infinity

START person = node({personId})
MATCH person-[:RELATIONSHIP*0..]-(p:Person)
WITH distinct p
MATCH p-[r]-(d:Data), p-[:DETAILS]->(details), d-[:FACT]->(facts)
RETURN p, r, d, details, facts
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top