如何获得起始节点和结束节点之间的关系?

Pra*_*nav 1 graph neo4j

我正在努力寻找家庭关系.

例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲.

我和我母亲的女儿之间有什么关系?它应该归还姐姐.

这就是我的图表.有8个关系和2个标签(男性或女性).

我的图表

如何在不指定任何节点的情况下实现此目的?例如,如果我想知道我和我父亲的女儿之间的关系.

我想做一些类似于MATCH () -[:Father]->()-[:Daughter]->()开始和结束节点之间的关系.

我确定这个查询绝对错误,但我希望你知道我在这里想要实现的目标.

Fyl*_*mTM 5

所以,

首先 - 您应该始终指定一些节点.

让我们创建一些数据:

CREATE (me:Person)
CREATE (mother:Person)
CREATE (daughter:Person)
CREATE (me)-[:Son]->(mother)
CREATE (me)<-[:Mother]-(mother)
CREATE (me)-[:Brother]->(daughter)
CREATE (me)<-[:Sister]-(daughter)
CREATE (mother)-[:Mother]->(daughter)
CREATE (mother)<-[:Daughter]-(daughter)
Run Code Online (Sandbox Code Playgroud)

数据


我和我母亲的女儿之间有什么关系?它应该归还姐姐.

现在我们可以找到你问题的答案:

MATCH (me)<-[:Mother]-()<-[:Daughter]-(she)
MATCH (me)<-[r]-(she)
RETURN type(r)
Run Code Online (Sandbox Code Playgroud)

结果:

Sister
Run Code Online (Sandbox Code Playgroud)

我们做了什么:

  • 第一场比赛:指定起跑路线
  • 第二场比赛:寻求理想的路径
  • 返回:获取路径结果

例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲.

这样的东西应该工作:

MATCH (me)<-[:Father]-()<-[:Wife]-(she)
MATCH (me)<-[r]-(she)
RETURN type(r)
Run Code Online (Sandbox Code Playgroud)

结果:

Mother
Run Code Online (Sandbox Code Playgroud)