neo4j - Neo4j 和 Cypher
问题描述
我正在学习 Neo4j 和 Cypher。我如何让它发挥作用,以便答案只是导演的头衔和姓名?该数据库是来自“Graph Academy”的 Neo4j 电影。问题是:“《你所做的事》的导演在哪些(1995 年上映的)电影(以及扮演什么角色)中扮演了角色?”
这是我到目前为止所拥有的:
MATCH (p:Person)->(m:Movie {title: 'That thing you do'})->[:ACTED_IN |DIRECTED] WITH date(m.released = 1995) RETURN m.title as Movie, p.role as Roles
解决方案
将这样的复杂查询分解为几个步骤通常很有帮助:
找到电影“你做的事”...
MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})
RETURN thatthingyoudo
...找到那部电影的导演
MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)
RETURN director
...查找该导演演过的电影
MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[:ACTED_IN]-(m:Movie)
RETURN m
...不关心所有电影,只关心 1995 年的电影
MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[:ACTED_IN]-(m:Movie {released:1995})
RETURN m
...最后,只需提取导演的姓名和电影的标题和角色,也许,
MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[actedIn:ACTED_IN]-(m:Movie {released:1995})
RETURN m.title, director.name, actedIn.roles
推荐阅读
- css - 如何解决边缘浏览器中的表格布局固定问题?
- javascript - 如何从源数组生成随机数组而不重复索引?
- amazon-web-services - 在 AWS Lambda 包中存储机密
- ruby - ruby server.rb 在终端上不起作用
- regex - 在原子编辑器中使用正则表达式进行条件替换
- angular - 无法在角度/打字稿中为对象中的键赋值
- python - 机器学习序列分类
- jquery - (Typo3 / powermail)欧芹js:将偏移量添加到焦点字段
- wpf - 仅当变量为真时才显示上下文菜单
- html - 如何在使用 materializecss 时删除 HTML5 表单验证默认错误消息?