我有一个问题是以排序链表的形式(在单个密码查询中)连接数据库中的电影列表。
电影节点数: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_MOVIE
和n
中的当前节点FOREACH
来创建两者之间的关系。如何在这里找到对前一个节点PREV_MOVIE
的引用,或者还有其他方法可以做同样的事情吗?
答案 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