我开始使用Neo4J并习惯了Cypher。 我的图表包含3种类型的实体:演员,电影,类别
边缘是:
我能够编写一个显示演员所有电影主题的查询。
图形和查询的演示在neo4j控制台中设置http://console.neo4j.org/?id=sm07j5
现在,我想写一个查询来检索一个actor的所有主题,然后是参与任何这些主题类别的电影的演员:是否可以用一个查询来完成它? 或者我是否必须先在变量中存储顶级类别?
Cypher是否支持查询结果中的变量定义?
答案 0 :(得分:1)
如果我正确理解你的要求"查询检索演员的顶部类别,然后参与任何这些顶部类别"如果没有这个" 顶级类别"这将是一个简单的答案。
MATCH (Robin: Actor {name: 'Robin Williams'})-[:ACTS_IN]->(m:Movie)-[:IS_ABOUT]->(t:Topic)
WITH t MATCH (t:Topic)<-[:IS_ABOUT]-(r:Movie)<-[:ACTS_IN]-(a:Actor)
RETURN a, COLLECT(t)
以上查询结果:
(2:Actor {name:"Demi Moore"}) [(7:Topic {name:"Teenagers"})]
(1:Actor {name:"Tom Cruise"}) [(7:Topic {name:"Teenagers"})]
(3:Actor {name:"Tom Hanks"}) [(8:Topic {name:"School"})]
(0:Actor {name:"Robin Williams"}) [(8:Topic {name:"School"}), (7:Topic {name:"Teenagers"})]
正如@InverseFalcon所评论的那样,您没有提供有关如何评估和订购类别的任何信息......