Neo4j,匹配仅带有一个标签的节点。

7
我有两种类型的节点。第一种类型带有:Schema标签。第二种类型带有:Root:Schema标签。我想编写一个Cypher查询,只匹配第一种类型(仅包含:Schema标签的类型)。
我尝试过以下查询:
MATCH (s:Schema) return s;

返回两种类型。获得第二种类型非常容易,只需使用
MATCH (s:Schema:Root) return s;

那么,与请求的标签完全匹配的适当密码是什么?
2个回答

12

您可以检查 LABELS() 集合的长度(如果您不知道要排除哪些其他标签,但只知道您想要单个标签,这非常方便):

MATCH (s:Schema)
WHERE LENGTH(LABELS(s)) = 1
return s;

2022年更新:如果您想使用此解决方案,则需要将函数“LENGTH”替换为“SIZE”(即“WHERE SIZE(LABELS(s))= 1”),基本上是因为现在“LENGTH”用于计算路径的长度,而“SIZE”用于计算列表中的元素数量。 - Fabio

7

试试这样:

match (s:Schema)
WHERE Not s:Root
RETURN s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接