Graph CYPHER-按原始顺序返回链接节点

Graph CYPHER-按原始顺序返回链接节点,graph,neo4j,cypher,Graph,Neo4j,Cypher,我真的很享受Graph&Cypher查询语言(来自RDBMS背景)的潜在功能,但我真的很难理解其中的一些概念 我尝试做的事情感觉应该相对简单。。。我有一个非常简单的五个节点的系列,具有父->子关系。在我看来,如果我要查询这个,每个节点都应该按适当的顺序返回。以下是目前的问题- MATCH p = (:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' }) WITH NODES(p) AS f

我真的很享受Graph&Cypher查询语言(来自RDBMS背景)的潜在功能,但我真的很难理解其中的一些概念

我尝试做的事情感觉应该相对简单。。。我有一个非常简单的五个节点的系列,具有父->子关系。在我看来,如果我要查询这个,每个节点都应该按适当的顺序返回。以下是目前的问题-

MATCH p = (:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })

WITH NODES(p) AS folders

UNWIND folders as folder

WITH folder RETURN DISTINCT folder
以下是我的查询结果的图形-

但是,一旦使用上述查询进行查询并获得物理响应,它将按以下顺序表示-

  • 文件夹4
  • 文件夹5
  • 文件夹3
  • 文件夹2
  • 文件夹1
我怎样才能对这些数据进行排序,或者我的查询是否需要完全重写


谢谢

你能试试这个查询吗:

MATCH p = (n:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })
WHERE NOT ()-[:CHILD]->(n)
WITH NODES(p) AS folders
RETURN folders
我认为您的问题来自于存在多个路径
p
,这就是为什么您使用了
独特的

不要忘记,如果您要求数据库查找模式
(n:Folder)-[:CHILD*]->(f:Folder{id:'1d05a36b-a67f-3fe7-a13a-6f12b1a38d26'})
,数据库将为您提供所有的可能性,因此在您的示例中:

  • F4->F5
  • F3->F4->F5
  • F2->F3->F4->F5
  • F1->F2->F3->F4->F5

如果你在这个结果集上做了一个
distinct
,是的,你得到了结果
F4、F5、F3、F2、F1

你能试试这个查询吗:

MATCH p = (n:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })
WHERE NOT ()-[:CHILD]->(n)
WITH NODES(p) AS folders
RETURN folders
我认为您的问题来自于存在多个路径
p
,这就是为什么您使用了
独特的

不要忘记,如果您要求数据库查找模式
(n:Folder)-[:CHILD*]->(f:Folder{id:'1d05a36b-a67f-3fe7-a13a-6f12b1a38d26'})
,数据库将为您提供所有的可能性,因此在您的示例中:

  • F4->F5
  • F3->F4->F5
  • F2->F3->F4->F5
  • F1->F2->F3->F4->F5

如果你在这个结果集上做一个
distinct
,是的,你得到的结果是
F4,F5,F3,F2,F1

,就这么简单!因此,
NOT
子句是这里的修复方法,但我不明白它是如何解决的?这实际上是说获取最后一个文件夹到父文件夹,但不匹配与最后一个文件夹的任何其他关系吗?非常感谢你的帮助!在这里,我要对数据库说,节点
n
是路径的根节点(即,没有任何传入的
子节点
关系)。所以只有一条匹配的路径,不像我在答案中描述的那么多。非常感谢你的帮助。它现在有意义了——我不知道它返回了许多可能性!就这么简单!因此,
NOT
子句是这里的修复方法,但我不明白它是如何解决的?这实际上是说获取最后一个文件夹到父文件夹,但不匹配与最后一个文件夹的任何其他关系吗?非常感谢你的帮助!在这里,我要对数据库说,节点
n
是路径的根节点(即,没有任何传入的
子节点
关系)。所以只有一条匹配的路径,不像我在答案中描述的那么多。非常感谢你的帮助。它现在有意义了——我不知道它返回了许多可能性!