neo4j 密码临时关系

rmbxnbpk  于 2023-04-20  发布在  其他
关注(0)|答案(2)|浏览(158)

我试图将一个路径合并到一个新的关系中,问题是我对存储它不感兴趣,而是将它作为一个密码查询的结果返回。
假设我有这样的东西:

(a)-[:CALLS_METHOD]->(b)-[:RETURNS_TYPE]->(c)

如何建立这样的临时关系:

(a)-[:DEPENDS_ON]->(c)

因为我只对ac之间的依赖关系感兴趣,而不关心这个依赖关系的细节。

wpx232ag

wpx232ag1#

你不能从数据库中返回一个不存在的关系。查询的目的是返回确实存在的东西。
也许你感兴趣的是推断对,而不是关系。比如:

MATCH (a)-[r:CALLS_METHOD|RETURNS_TYPE*]->(b)
RETURN a, "depends on", b

另一种方法是具体化/保存关系,然后查询它:

MATCH (a)-[r:CALLS_METHOD|RETURNS_TYPE*]->(b)
CREATE a-[newRel:DEPENDS_ON]->b
RETURN newRel;

但这有创造它的副作用。

bejyjqdl

bejyjqdl2#

apoc库中有一个函数可以做到这一点:apoc.create.vRelationship
创建示例数据集:

CREATE (from:Account), (to:Account)
WITH from, to
CREATE (from)-[:SENT]->(:Payment {amount: 250})-[:RECEIVED]->(to)
CREATE (from)-[:SENT]->(:Payment {amount: 750})-[:RECEIVED]->(to)

使用apoc.create.vRelationship函数执行查询:

MATCH (from:Account)-[:SENT]->(p:Payment)-[:RECEIVED]->(to:Account)
RETURN from, to, apoc.create.vRelationship(from,'PAID',{amount:sum(p.amount)},to) as rel;

SEE RESULT

相关问题