如何返回Node类或在Neo4j中输入查询结果

时间:2017-04-02 06:51:48

标签: neo4j

我有一个节点类型Author,它通过关系类型Book链接到节点类型MagazineWROTE。我需要找到特定作者在一个查询中写的所有书籍和杂志,并且在查询结果中我希望能够区分书籍和杂志结果。

我可以实现这一目标的一种方法是为书籍和杂志定义单独的关系,并在结果中返回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()函数仅适用于关系,而不适用于节点。感谢您的帮助!

1 个答案:

答案 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