Я пытаюсь получить подграф на основе запроса узла. запрос должен игнорировать указания отношения, пока все узлы в подграфа связаны: ех: u1 -FRIEND-> u2 -FRIEND-> и3 u4 -FRIEND-> и5 -FRIEND-> u6Neo4j читать все подграфы без дублирования Cypher query
ищет u1 или u2 или u3, должен возвращать набор: [u1, u2, u3]
Я использовал следующий запрос: Cypher
MATCH (a:User)-[:FRIEND_OF*0..]-(b)
WHERE a.userId = 'some_id'
WITH a, collect(DISTINCT b) AS sets
RETURN DISTINCT sets
проблема заключается в том, что я получаю все перестановок множества, таких как:
DATA: u1 -FRIEND-> u2 -FRIEND-> u3
RETURN: [u1,u2,u3],[u1,u3,u2],[u2,u1,u3]...
Как я могу отличить разные наборы, чтобы возвращать только одну перестановку?
Я также хотел бы поддержать случай, когда пользователь может находиться в разных подграфах, поэтому ответ должен быть двумя подграфами.
благодаря
Это правильный подход, хотя если ваши подграфы большие, и вы видите хиты производительности, вы можете найти [расширитель пути APOC] (http://stackoverflow.com/a/42227632/92359), чтобы быть более эффективным чем совпадение шаблона переменной длины при расширении для соответствия узлам в подграфе. – InverseFalcon
thanks @cybersam - работает как шарм. также, спасибо за подсказку индекса. – user2405864
Добро пожаловать. Пожалуйста, не забывайте [Принять] (http://meta.stackexchange.com/q/5234/255960) ответ, который наилучшим образом отвечает на ваши вопросы. – cybersam