2016-09-06 3 views
0

Я хотел бы выполнить проверку свойства, которое существует на обоих узлах и отношений в моей БД. Есть ли способ объединить их все как объект, а затем выполнить проверку на объект вместо выполнения трех отдельных проверок?Совокупные узлы и отношения

То, что я в настоящее время является:

MATCH (n1)-[r]-(n2) WHERE (myConditions) 
WITH n1, r, n2 
WHERE n1.property=1 AND r.property=1 AND n2.property=1 
RETURN * 

Что я ищу что-то вроде:

MATCH (n1)-[r]-(n2) WHERE (myConditions) 
WITH n1, r, n2 AS entity 
WHERE entity.property=1 
RETURN * 

Важное примечание: Есть запросы с более чем 2 узлов и нескольких отношений. Я хотел бы объединить все объекты графа, а затем выполнить одну проверку.

Кстати, если «агрегация» не подходит для данного случая, пожалуйста, исправьте меня.

ответ

2

Вы можете использовать предикаты, такие как all(), any(), none() и т. Д. На всех узлах и отношениях на вашем пути. Вы по-прежнему должны проверять узлы и отношения отдельно.

MATCH path=(n1)-[r]-(n2) 
WHERE (myConditions) 
WITH path 
WHERE all(n in nodes(path) WHERE n.property = 1) 
AND all(r in relationships(path) WHERE r.property = 1) 
RETURN path 
Смежные вопросы