Как получить все родительские узлы определенного узла на основе идентификатора - PullRequest
0 голосов
/ 13 марта 2020

Я хочу получить все узлы 3-го уровня (4,5,6 и 7 ниже pi c) и их взаимосвязи вместе с подробностями его родительского узла. В следующем примере:

  • Если Я посылаю ID : 7, тогда я должен получить информацию об узле 3 и `1
  • Если я отправлю ID : 4, тогда я должен получить информацию об узле 2 и` 1

enter image description here

Как узнать подробности родительского узла? Пожалуйста, помогите

РЕДАКТИРОВАТЬ: я пытаюсь запрос, чтобы получить узлы, ребра и непосредственные родительские детали. Я получаю узлы и ребра, но с родителем я получаю большой список узлов. Не уверен, почему

Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<--(child) return n,r,COLLECT(parent) as parent

enter image description here

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Это типичный запрос пути. Если вы свяжете его как с дочерним, так и с root, вам нужно будет извлечь только один путь. Ниже я предполагаю, что вы передаете myid в качестве параметра и связали узлы, используя :HAS_CHILD взаимосвязи

// the path pattern
MATCH path=(root)-[:HAS_CHILD*]->(child)  
// limiting the search
WHERE NOT ()-[:HAS_CHILD]->(root)
      AND child.ID = $myid

//returning the results
RETURN path

or 

// return the IDs, except the last one, because it is the node you started from
UNWIND nodes(path)[..-1] AS node
RETURN node.ID AS parent
0 голосов
/ 13 марта 2020

Итак, если вы хотите получить все узлы родителя, используйте следующий запрос:

Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<-[r1*]-(child)  return n,r,COLLECT(parent) as parent

. Как вы упомянули в комментарии, вы ищете родителя 3-го уровня, чтобы вы могли дать номер уровня и то, что хотите получить , Пожалуйста, смотрите ниже запрос для уточнения c level

Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<-[r1*3]-(child)  return n,r,COLLECT(parent) as parent

, и, насколько я понимаю, вам не нужно писать этот длинный запрос. проверьте ниже запрос, если вы получаете требуемый результат

MATCH (p)<-[r*3]-(c)  return p,r,c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...