Cypher查询以获取具有2个以上节点的所有标签

时间:2014-06-05 11:29:31

标签: neo4j cypher

我有一个图表,其中每个连接的组件都有一个标签,让我们说comp1,comp2等。我想做一个cypher查询,返回所有具有多个节点的标签。 我得到了这样的所有标签:

match (n) return labels(n)

所以我尝试做这样的事情,以便只获得我需要的标签:

match (n) with labels(n) as lb where count(k:lb[0]) >= 2)  return lb limit 10

但是我收到语法错误:

  

无效的输入')&#39 ;:预期的数字,'。',' E',空格,节点标签,   ' ['," =〜",IN,IS,' *',' /','% ',' ^',' +',' - ','<',' >',"< =","> =",   ' =',"<>","!=",AND,XOR,OR,LOAD CSV,START,MATCH,UNWIND,MERGE ,   CREATE,SET,DELETE,REMOVE,FOREACH,WITH,RETURN,UNION,&#39 ;;'或结束   输入(第1行,第57列)

我还想根据具有该标签的节点数来订购标签......

2 个答案:

答案 0 :(得分:2)

如果您使用Neo4j 2.0版进行此操作,您可以通过此密码查询实现您想要的效果:

    Start n=node(*)
    match (n)-->() with n,count(*) as rel_cnt where rel_cnt >= 2 return n;

但请注意,此查询将横跨整个图形,因此,将其限制为某些标签可能是个好主意。欢呼声。

<强>更新

我把这个问题看成是有超过1个关系的节点,我的不好。这个查询不会做OP所要求的。

答案 1 :(得分:0)

2.1

match (n) 
unwind labels(n) as l
with l,count(*) as cnt
where cnt > 2
return l