gpt4 book ai didi

java - 密码遍历

转载 作者:行者123 更新时间:2023-12-01 23:16:00 25 4
gpt4 key购买 nike

我正在 Neo4j 图中实现类似链表结构的东西。该图是通过执行许多类似于以下的语句来创建的:

CREATE (R1:root{edgeId:2})-[:HEAD]->
(:node{text: 'edge 2 head text', width:300})-[:NEXT{edge:2, hard:true}]->
(:node{text: 'edge 2 point 0'})-[:NEXT{edge:2}]->
(n0:node{text: 'edge 2 point 1'}),
(n0)-[:BRANCH]->(:root{edgeId:3}),
(n0)-[:NEXT{edge:2}]->
(:node{text: 'edge 2 point 2'})-[:NEXT{edge:2}]->
(:node{text: 'edge 2 point 3'})<-[:TAIL{edge:2}]->(R1)

遍历边意味着从根节点开始,遵循其与第一个节点的传出 HEAD 关系,并遵循 NEXT 关系链,直到到达具有从我们开始的根传入 TAIL 关系。

即:

MATCH path = (root:root:main)-[:HEAD]->(a:point)-[n:NEXT*]->(z:point)<-[:TAIL]-(root) 
RETURN nodes(path), n

每个节点都具有出向NEXT关系,但某些节点还具有BRANCH关系,该关系指向其他边的根节点。

在上面的查询中,nodes(path)显然返回了沿边的所有节点,并且n列出了传出的NEXT关系沿它的每个节点。我如何修改此查询,以便除了传出 NEXT 关系之外,它还返回任何传出 BRANCH 关系

如何修改上述查询,以便返回的每条记录都包含路径上的一个节点以及来自的所有传出关系(NEXTBRANCH)的列表它?

请注意,我不想遍历此查询中的 BRANCH 边,我只是希望它告诉我它们在那里。

(PS,我正在 Java 中实现此策略,但到目前为止,我更喜欢直接执行 Cypher 查询,而不是使用 Traversal API。如果这样做让我自己变得更加困难,请提请我注意)。

最佳答案

您可以随时返回路径表达式。

MATCH path = (root:root:main)-[:HEAD]->(a:point)-[n:NEXT*]->(z:point)<-[:TAIL]-(root) 
RETURN extract(x in nodes(path) | [x, x-[:BRANCH]->()]), n

x-[:BRANCH]->() 返回路径集合,因此如果您只想访问关系,则必须这样做

[p in x-[:BRANCH]->() | head(rels(p)) ]

有关如何将 Activity 流实现为非托管扩展的示例,您可以查看以下内容:https://github.com/jexp/neo4j-activity-stream

关于java - 密码遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com