如何获取关系的标签

27
如果我有密码查询
MATCH (a)-[r]->(b)

我可以轻松获取a和b细线的标签。

MATCH (a)-[r]->(b)
RETURN labels(a), labels(b)

但是当我想要使用相同的语法获取r的标签时

MATCH (a)-[r]->(b)
RETURN labels(r)

我明白了

Type mismatch: expected Node but was Relationship

如何返回关系 r 的标签?

1个回答

39
在Neo4j中,关系没有标签 - 它们只有一个单一的类型,因此应该是:

在Neo4j中,关系没有标签 - 它们只有单一类型,所以应该是:

MATCH (a)-[r]->(b)
RETURN TYPE(r)

有没有任何理由不将类型称为标签? - Ooker
1
我明白了。但是为什么一个关系不能有多个标签呢? - Ooker
你能举一个例子,说明在多个标签比多个关系更合适的情况下,要记住关系本身可以有属性吗? - Dan G
1
主要原因是NoSQL数据库的“代价”之一是它们是专业化的。是的,你可以在关系型数据库中建模图形——但你不会得到专门的图形数据库提供的优化和性能。这样做的一个副作用是你最终在设计上变得更加规范。如果每个关系路径都有一个类型,那么可以更好地优化。这是一个缺点吗?绝对是的。这值得吗?几乎总是值得的。关键词是“几乎”。如果这是你解决方案的致命问题,请看看还有什么可以解决你的问题。也许你也可以重新构思你的需求。 - Dan G
这很有趣。你知道有没有深入讨论这个话题的文章吗?我应该搜索哪些关键词? - Ooker
显示剩余2条评论

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