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

Neo4j Cypher查询以获取具有2个以上节点的所有标签,neo4j,cypher,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 但我得到一个语法错误: 无效输入“)”:应为数字“,”E“,空格,节点标

我有一个图,其中每个连接的组件都有一个特定的标签,比如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
但我得到一个语法错误:

无效输入“)”:应为数字“,”E“,空格,节点标签, “[”,“=~”,IN,是“*”,“/”,“%”,“^',“+”,“-”,“=”, “=”、“”、“!=”和、异或、或、加载CSV、开始、匹配、展开、合并、, 创建、设置、删除、删除、FOREACH、WITH、RETURN、UNION、“;”或end 输入(第1行第57列)


我还希望按照具有该标签的节点数对标签进行排序…

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

    Start n=node(*)
    match (n)-->() with n,count(*) as rel_cnt where rel_cnt >= 2 return n;
但是请注意,此查询将横穿整个图形,因此,将其限制为某些标签可能是一个好主意。干杯

更新

我把这个问题理解为具有多个关系的节点,这是我的错。这个查询不能满足OP的要求。

对于2.1

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

这个答案被标记为已接受,但据我所知,它与问题无关。OP询问如何对标签计数进行过滤,而这个查询甚至没有包含标签。而且,鉴于您所说的是Neo4j 2.0,因此不需要
start
子句。正确。我把这个问题理解为关系计数,我的错。t他的查询不符合OP的要求。关于版本…没错。您不需要Start子句。感谢您指出这一点。我将更新答案以反映这一点。我已将此查询改编为工作:Start n=node()match(n)-->()with n,count()as rel_cnt其中rel_cnt>=2个返回标签(n),rel_cnt order by rel_cnt DESC