2013-07-19 6 views
0

У меня есть вспомогательный граф типа узла c, который имеет отношение к t1 и t2. Узел t1 имеет отношение с w1 и w2. Узел t2 имеет отношение с w1.узел агрегата узла neo4j

То, что я хочу запросить с помощью cypher, - это узел c, возвращающий узлы w, имеющие 2 или более t узлов. т.е. только w1.

Видимо, вы не можете агрегировать ИНЕКЕ как

START c=node(7) 
MATCH (c)-[:T_TO]-(t)-[:W_TO]-(w) 
WHERE COUNT(t) >= 2 
RETURN w.WName; 

Может быть, глядя на это с другой стороны, это не работает либо как я хочу только вес, что только касаются t1 и t2 .. .?

START c=node(7), t1=node(10), t2=node(8) 
MATCH (c)-[:T_TO]-(t)-[:W_TO]-(w) 
WHERE t in [t1, t2] 
RETURN t, w.WName; 

Update Любой, кто хочет что-то вроде второго, это работает:

START c=node(7), t1=node(8), t2=node(10) 
MATCH (c)-[:T_TO]-(t1)-[:W_TO]-(w),(c)-[:T_TO]-(t2)-[:W_TO]-(w) 
RETURN w.WName; 

ответ

1

Как насчет

START c=node(7) 
MATCH (c)-[:T_TO]-(t)-[:W_TO]-(w) 
WITH COUNT(t) as tCount,w 
WHERE tCount >= 2 
RETURN w.WName; 
+0

Arhh Это трюк. Большое спасибо. – Cheval