2016-05-28 2 views
1

Я пытаюсь найти наиболее оптимальный способ возврата всех согласованных узлов и любых отношений, которые они могут иметь?Cypher Query Возвращает согласованные узлы и необязательные отношения

Вот моя проблема:

Мне нужно вернуть всех пользователей, которые создали проект, так

match (u : User)-[r:CREATE]->(p: Project) return u, collect(p) 

Простой достаточно, но пользователь также может иметь другие отношения, и я хотел бы включить их или необязательно check (return true/false)

Например, пользователь может иметь отношения РЕКОМЕНДУЕТ, я не хочу ограничивать его, но если проверить, существует ли он с каким узлом?

В идеале мое возвращение таблица будет выглядеть следующим образом:

USER1 - ПРОЕКТ (S) - РЕКОМЕНДУЕТСЯ USER

ПОЛЬЗОВАТЕЛЬ2 - PROJECT (S) - NULL (никто не рекомендует)

ответ

2

OPTIONAL MATCH будет соответствовать шаблон и возврат null, если он не существует

MATCH (u : User)-[r:CREATE]->(p: Project) 
OPTIONAL MATCH (u)-[:RECOMMEND]->(rec) 
RETURN u, collect(p), collect(rec) 
+0

да, отлично, большое спасибо – zsayn

Смежные вопросы