2014-10-07 63 views
1

我想一个查询,例如:计数和Neo4j的暗号操作

MATCH (g:GNE)-[:like]->(c:CLUSTER)<-[:Belong]-(h:GNE) 
WHERE g.sym = 'ST1' AND count(c) >=4 
RETURN h.sym, count(c) AS score, collect(c.clustInfo), h.chr ORDER BY score DESC 

但表达 '计数(C)> = 4' 不工作... 有什么建议?

回答

3

您不能在WHERE子句中直接使用聚合,您需要使用WITH创建一个新的变量,以便在后续条件中进行测试。您的查询变得像这样:

MATCH (g:GNE{sym:"ST1"})-[:like]->(c:CLUSTER)<-[:Belong]-(h:GNE) 
WITH h, COUNT(c) AS score, COLLECT(c.clusterInfo) AS info 
ORDER BY score DESC 
WHERE score >= 4 
RETURN h.sym, score, info, h.chr 
+0

非常感谢!我希望在这句话中增加以下模式:与节点CLUSTER相关的其他节点,并且在所有群集中都是常见的。有些事情是这样的:'(c:CLUSTER) - [:has] - (v:ORTH)'其中v.Term在所有CLUSTER中相等。再次感谢! – quelopes 2014-10-07 17:25:38

+0

嘿@quelopes需要作为一个新的问题被问到。祝你好运! – JohnMark13 2014-10-07 18:42:42