Neo4j,Cypher:以排序链表的形式连接图中的现有节点

时间:2014-07-10 11:17:45

标签: neo4j cypher

我有一个问题是以排序链表的形式(在单个密码查询中)连接数据库中的电影列表。

电影节点数:25L

MATCH (movie:Movie)
WITH movie
ORDER BY movie.rating DESC
WITH collect(movie) as p
FOREACH (n IN nodes(p)| CREATE PREV_MOVIE-[:NextMovie]->(n) )
RETURN p

这需要引用前一个节点PREV_MOVIEn中的当前节点FOREACH来创建两者之间的关系。如何在这里找到对前一个节点PREV_MOVIE的引用,或者还有其他方法可以做同样的事情吗?

2 个答案:

答案 0 :(得分:6)

你需要应用一些FOREACH魔法:

MATCH (movie:Movie)
WITH movie
ORDER BY movie.rating DESC
WITH collect(movie) as p
FOREACH(i in RANGE(0, length(p)-2) | 
  FOREACH(p1 in [p[i]] | 
    FOREACH(p2 in [p[i+1]] | 
      CREATE UNIQUE (p1)-[:PREV_MOVIE]->(p2))))

答案 1 :(得分:1)

在Neo4j文档的教程部分,有一个链接列表章节,可能会对你有帮助:

http://docs.neo4j.org/chunked/stable/cypherdoc-linked-lists.html