Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取与neo4j中路径中的节点相关的所有节点_Neo4j_Nodes - Fatal编程技术网

获取与neo4j中路径中的节点相关的所有节点

获取与neo4j中路径中的节点相关的所有节点,neo4j,nodes,Neo4j,Nodes,我有一个电影数据库,每个月都有电影发行。电影通过[:release]连接到月份。每个月都通过[:NEXT]相互连接 结构如下所示: 1->2->3->4..->12->1->2->.. match startPath=(root)-[:HAS_Year]->(year1:Year{year:1950})-[:HAS_MONTH]->(startLeaf:M‌​onth{month:1}), endPath = (root)-[:HA

我有一个电影数据库,每个月都有电影发行。电影通过
[:release]
连接到月份。每个月都通过
[:NEXT]
相互连接

结构如下所示:

1->2->3->4..->12->1->2->..
match
  startPath=(root)-[:HAS_Year]->(year1:Year{year:1950})-[:HAS_MONTH]->(startLeaf:M‌​onth{month:1}),
  endPath = (root)-[:HAS_Year]->(year2:Year{year:1951})-[:HAS_MONTH]->(endLeaf:Month{month:1‌​2}),
  p=(startLeaf)-[:NEXT*0..]->(endLeaf)
就像在时间树上一样

(movie{title:'Matrix'})-[:released]->(month)

现在我在变量
p
中找到了所有这些月份的路径<代码>节点(p)返回所有月份

现在我想在
p
中返回与每个月相关的所有电影。谁能帮我一下吗

[编辑以包含@Shiva的详细信息]


实际上,查询是这样的:

1->2->3->4..->12->1->2->..
match
  startPath=(root)-[:HAS_Year]->(year1:Year{year:1950})-[:HAS_MONTH]->(startLeaf:M‌​onth{month:1}),
  endPath = (root)-[:HAS_Year]->(year2:Year{year:1951})-[:HAS_MONTH]->(endLeaf:Month{month:1‌​2}),
  p=(startLeaf)-[:NEXT*0..]->(endLeaf)
最后我有了路径“p”,现在我想检索与路径中的月份节点关联的所有电影节点。我不太确定如何获取它们,实际上我正在尝试查询时间树模型,并检查执行时间的任何差异等等。

[UPDATED]

这应该适合您:

MATCH
  (root)-[:HAS_Year]->(:Year {year:1950})-[:HAS_MONTH]->(start:Month {month:1}),
  (root)-[:HAS_Year]->(:Year {year:1951})-[:HAS_MONTH]->(end:Month {month:12}),
  p=(start)-[:NEXT*0..]->(end)
WITH NODES(p) AS months
UNWIND months AS month
OPTIONAL MATCH (month)<-[:released]-(movie)
RETURN month, COLLECT(movie) AS movies;
如果在时间戳上创建索引:

CREATE INDEX ON :Month(timestamp);
然后,您可以使查询更高效(但您当前必须告诉Cypher使用索引):

匹配(电影:电影)-[:发布]->(月:月)
使用索引月份:月份(时间戳)
其中month.timestamp>=“1950-01”和month.timestamp[更新]

这应该适合您:

MATCH
  (root)-[:HAS_Year]->(:Year {year:1950})-[:HAS_MONTH]->(start:Month {month:1}),
  (root)-[:HAS_Year]->(:Year {year:1951})-[:HAS_MONTH]->(end:Month {month:12}),
  p=(start)-[:NEXT*0..]->(end)
WITH NODES(p) AS months
UNWIND months AS month
OPTIONAL MATCH (month)<-[:released]-(movie)
RETURN month, COLLECT(movie) AS movies;
如果在时间戳上创建索引:

CREATE INDEX ON :Month(timestamp);
然后,您可以使查询更高效(但您当前必须告诉Cypher使用索引):

匹配(电影:电影)-[:发布]->(月:月)
使用索引月份:月份(时间戳)

其中month.timestamp>=“1950-01”和month.timestamp如果您得到所有月份,那么使用链接列表是没有意义的。你可以做
匹配(电影:电影)-[:发布]->(月:月)返回月,收集(电影)作为电影要点很好。我想按月份顺序返回结果,但不清楚
month
节点是否具有用于排序节点的可用时间戳。但是我会更新我的答案,给你一个很好的建议。谢谢约定是有一个
month
属性和一个
id
属性和一个年-月,例如用于排序的“2015-01”。实际上,查询是这样的:match startPath=(root)-[:HAS_year]>(year1:year{year:1950})-[:HAS_month]>(starteaf:month{month:1}),endPath=(root)-[:HAS_year>(year2:year){year:1951})-[:HAS_MONTH]>(endLeaf:MONTH{MONTH:12}),p=(starteaf)-[:NEXT*0..]>(endLeaf)最后我得到了路径“p”现在,我想检索路径中与月份节点关联的所有电影节点。我不太确定如何获取它们。我实际上正在尝试查询时间树模型,并检查执行时间的差异,因此,我无法在此处使用@cybersam的上述查询。好的,请参阅我的更新答案。我还更新了问题n包括您的详细信息。如果您要获得所有月份,则无需费心处理链接列表。您只需执行
MATCH(movie:movie)-[:RELEASED]->(month:month)RETURN month,COLLECT(movie)作为电影;
很有意义。我想按月份顺序返回结果,但不清楚
month
节点是否具有用于排序节点的可用时间戳。但是我将更新我的答案,并提供您极好的建议。谢谢!约定是使用
month
属性,其中包含月份的整数和
id
带有年-月的属性,例如用于排序的“2015-01”。实际上,查询是这样的:match startPath=(root)-[:HAS_year]->(year1:year{year:1950})-[:HAS_month]->(startEAF:month{month:1}),endPath=(root)-[:HAS_year{year:1951})-[:HAS_month]>(endLeaf:month{month{month:12}),p=(startEAF)-[:NEXT NEXT.-(endLeaf)-(endLeaf)-[:NEXT最后我得到了路径“p”现在,我想检索路径中与月份节点关联的所有电影节点。我不太确定如何获取它们。我实际上正在尝试查询时间树模型,并检查执行时间的差异,因此,我无法在此处使用@cybersam的上述查询。好的,请参阅我的更新答案。我还更新了问题n以包括您的详细信息。