3

使用 Neo4j 1.9.3 -

我想创建一个音乐节目列表。在一个给定的程序中,可能会执行三个部分。每首乐曲都有一个与之关联的作曲家,并且可能出现在许多不同的节目中,所以我不能将序号放在乐曲节点上。

我假设我可以创建程序,与每个部分的关系如下:

(program1)-[:PROGRAM_PIECE {program_seq: 1}]->(piece1)
(program1)-[:PROGRAM_PIECE {program_seq: 2}]->(piece2)
(program1)-[:PROGRAM_PIECE {program_seq: 3}]->(piece3)

我的问题是,如何查询图表以使各个部分按关系属性的顺序排列program_seq?我可以使用带有节点属性的 ORDER BY,但在关系方面没有成功(我的生活故事......)

4

2 回答 2

5

如果你喜欢它,就把它锁起来:也就是说,把它绑定到一个变量上。然后,您可以使用ORDER BY与节点属性相同的方式。如果您已经检索到您的程序,(program1)您可以执行类似的操作

MATCH (program1)-[r:PROGRAM_PIECE]->(piece1)
  RETURN program1, r, piece1
  ORDER BY r.program_seq
于 2013-10-07T19:12:58.773 回答
0

我最近做了同样的事情来跟踪特定游戏中的国际象棋移动。它与节点属性相同。

start program = node(*) // or better yet, use a real index query to find the program
match (program)-[program_piece:PROGRAM_PIECE]->(piece)
return program, piece
order by program_piece.program_seq
于 2013-10-07T19:10:09.373 回答