我有一个节点类型Author
,它通过关系类型Book
链接到节点类型Magazine
和WROTE
。我需要找到特定作者在一个查询中写的所有书籍和杂志,并且在查询结果中我希望能够区分书籍和杂志结果。
我可以实现这一目标的一种方法是为书籍和杂志定义单独的关系,并在结果中返回TYPE(relationship)
值以匹配书籍与杂志的结果。
MATCH (a:Author)-[r]->(i) WHERE TYPE(r) = 'WROTE_BOOK' OR TYPE(r) = 'WROTE_MAGAZINE'
RETURN TYPE(r), i
但是,我希望能够在没有WROTE单独关系的情况下做到这一点。有没有办法在查询结果中查询节点类型或类?在上面的示例中,如下所示:
MATCH (a:Author)-[:WROTE]->(i) WHERE TYPE(i) = 'Book' OR TYPE(i) = 'MAGAZINE'
RETURN TYPE(i), i
似乎TYPE()
函数仅适用于关系,而不适用于节点。感谢您的帮助!
答案 0 :(得分:2)
类型用于关系,标签用于节点。
MATCH (a:Author)-[:WROTE]->(i) WHERE labels(i) in ['Book','MAGAZINE']
RETURN labels(i), i
如果您的作者只编写杂志和书籍,则不需要WHERE
过滤器。
MATCH (a:Author)-[:WROTE]->(i)
RETURN labels(i), i