Сопоставление узлов по отношениям, основанным на свойствах Ancestor каждого узла в neo4j - PullRequest
0 голосов
/ 30 сентября 2019

В сценарии, где сборки Объектов имеют подузлы сборок Объектов:

Сборка 1

A:Object{name:ABC} is PART_OF B:Object{name:DEF} is PART_OF C:Object{name:GHI}

Сборка 2

D:Object{name:JKL} is PART_OF E:Object{name:MNO} is PART_OF F:Object{name:PQR} is PART_OF G:Object{name:STU}

и некоторый компонент объекта сборки 1 подключен к сборке 2

C is JOINED_TO G

Как MATCH все объекты, где любая часть цепи сборки в сборке1 имеет заданное свойство имени, которое является JOINED_TO объектами, в которых любая часть имеет заданное свойство имени

мое предположение будет:

MATCH ob1:Object{name:DEF} - [:PART_OF*] -> ob2:Object - [:JOINED_TO] - ob3:Object <- [:PART_OF*] - ob4:Object{name:PQR}
RETURN ob2, ob3

, но никакое количествоГрафика 'asciiart' дает мне то, что я ожидаю

 ob2    ob3
------------
  C      G

1 Ответ

0 голосов
/ 01 октября 2019

Я использовал это для создания вашего примера графика:

CREATE (A:Object{name:'ABC'})-[:PART_OF]->(B:Object{name:'DEF'})-[:PART_OF]->(C:Object{name:'GHI'}),
(D:Object{name:'JKL'})-[:PART_OF]->(E:Object{name:'MNO'})-[:PART_OF]->(F:Object{name:'PQR'})-[:PART_OF]->(G:Object{name:'STU'})
CREATE (C)-[:JOINED_TO]->(G)

И я использовал это для запроса графика:

MATCH (ob1:Object{name:'DEF'}) - [:PART_OF*] -> (ob2:Object) - [:JOINED_TO] - (ob3:Object) <- [:PART_OF*] - (ob4:Object{name:'PQR'})
RETURN ob2, ob3

Это правильно возвращает два узла с именами 'GHI'и 'STU'.

Этот запрос не будет возвращать "C" или "G", потому что вы никогда не сохраняли это на своем графике. В вашем запросе на создание «C» и «G» (и все остальные отдельные буквы) являются переменными для рассматриваемых узлов. Переменные не сохраняются в базе данных и не сохраняются после завершения запроса. Они предназначены для адресации вещей (узлов, отношений, значений и т. Д.) На протяжении всего запроса, но не после него.

Если вы хотите, чтобы запрос возвращал «C» и «G», вам следует сохранитьони являются дополнительными свойствами узлов и возвращают эти свойства в ВОЗВРАТ.

Вот документация для переменных из руководства разработчика Cypher.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...