Neo4j: посещение одного края дважды во время обхода - PullRequest
0 голосов
/ 27 января 2020
WITH a
MATCH p=(a)-[:rel1]->(:B)-[:rel2]->(:C)-[:rel3]->(d)<-[:rel3]-(:C)<-[:rel2]-(:B)<-[:rel1]-(a)
WITH d, ... do more things

Похоже, d узлов, где rel3 совместно используется d и: C, не возвращаются. IE p не включает пути, когда замкнутое l oop пересекает тот же край (когда «соединить точки» выглядит как «ключ», а не как «круг»). Я думаю, что это основа для базы данных графа - что вы не можете пройти один и тот же край дважды по одному и тому же пути? Есть ли способ начать с a и найти все d, которые связаны между собой: B и: C имеют общие, включая те, которые имеют одинаковые rel3, но разные rel1 и rel2, ie, чтобы не отбрасывать те d-узлы, где rel3 такие же?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Да, я могу подтвердить способ обработки:

p=(a)-[:rel1]->(:B)-[:rel2]->(c)<-[:rel2]-(:B)<-[:rel1]-(a), (c)-[:rel3]->(d)
0 голосов
/ 27 января 2020

Уникальность сопоставляемых шаблонов задокументирована в Руководстве Cypher .

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

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